MAT(Memory Analyzer tool)使用

当线上环境出现OOM/内存泄漏了,怎么办?

让虚拟机在发生内存溢出时 Dump 出当前的内存堆转储快照,配置-XX:+HeapDumpOnOutOfMemoryError,

当出现OOM时,分析dump下来的hprof文件,一般使用MAT辅助查看。

安装方式:

1 eclipse安装MAT插件;安装说明:https://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-ma/index.html

2 独立版本(建议),下载地址:http://www.eclipse.org/mat/downloads.php,下载解压后就可以直接用。

分析一个堆转储文件需要消耗堆空间,需要分配内存,

MemoryAnalyzer.ini中的参数一般默认为-vmargs– Xmx1024m;

当dump文件的大小大于配置的1024m,会报错;

方式1:修改启动参数 MemoryAnalyzer.exe-vmargs -Xmx4g

方式2:编辑文件 MemoryAnalyzer.ini,修改/添加参数 -vmargs– Xmx4g

模拟产生hprof文件:

public class OOMTest {
    public static void main(String[] args) {
        List<Person> list1 = new ArrayList<>();
        for (Long i = 0L; i < 1000L; i++) {
            list1.add(new Person(i, i.toString(), i.toString()));
        }

        List<Shop> list2 = new ArrayList<>();
        for (long i = 0L; i < 256L * 1024L * 1024L; i++) {
            list2.add(new Shop(i));
        }
    }

    static class Person {
        private Long id;
        private String name;
        private String idcard;

        public Person(Long id, String name, String idcard) {
            this.id = id;
            this.name = name;
            this.idcard = idcard;
        }
    }
}

  

修改相关参数,这里加上了 -XX:+HeapDumpOnOutOfMemoryError -Xmx256M

执行后:

dump下来的hrof文件在项目工程目录下。

打开MAT工具,File >> Open Heap Dump...

通过分析结果,很容易知道哪些对象占用了大量的堆内存。

MAT会把分析结果打包成zip包,解压后通过浏览器就可以访问。

打开对象依赖关系树形视图

相关链接:

http://seanhe.iteye.com/blog/898277

http://www.blogjava.net/rosen/archive/2010/06/13/323522.html

https://blog.csdn.net/rachel_luo/article/details/8992461

原文地址:https://www.cnblogs.com/ken-jl/p/9029057.html

时间: 2024-07-30 23:03:32

MAT(Memory Analyzer tool)使用的相关文章

MAT(Memory Analyzer Tool)工具入门介绍(转)

1.MAT是什么? MAT(Memory Analyzer Tool),一个基于Eclipse的内存分析工具,是一个快速.功能丰富的JAVA heap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗.使用内存分析工具从众多的对象中进行分析,快速的计算出在内存中对象的占用大小,看看是谁阻止了垃圾收集器的回收工作,并可以通过报表直观的查看到可能造成这种结果的对象. 2.为什么使用MAT?    当服务器应用占用了过多内存的时候,会遇到OutOfMemoryError.如何快速定位问题呢?Eclip

MAT Memory Analyzer Tool 插件安装(图解)

http://blog.csdn.net/yanghongchang_/article/details/7711911 MAT Memory Analyzer Tool 插件安装(图解)

MAT Memory Analyzer Tool 插件安装 myeclipse10

使用Memory Analyzer能分析内存使用状态,在发生内存溢出时常常使用到. 第一步:下载Eclipse MAT 下载地址:http://www.eclipse.org/mat/downloads.php 第二步:下载之后将压缩包解压,放置到Myeclipse 的MyEclipse\MyEclipse 10\dropins目录下 创建一个mat的文件夹,解压的文件都放那里 第三步:重启myeclipse,当启动完成后可以看到 第四步:打开Window->Perferences,你会看见这个

MAT(Memory Analyzer Tool)工具入门介绍

转载:http://blog.csdn.net/aaa2832/article/details/19419679 1 内存泄漏的排查方法 Dalvik Debug Monitor Server (DDMS) 是 ADT插件的一部分,其中有两项功能可用于内存检查 : ·    heap 查看堆的分配情况 ·    allocation tracker跟踪内存分配情况 DDMS 这两项功能有助于找到内存泄漏的操作行为. Eclipse Memory Analysis Tools (MAT) 是一个分

使用Memory Analyzer tool(MAT)分析内存泄漏

前言 在平时工作过程中,有时会遇到OutOfMemoryError,我们知道遇到Error一般表明程序存在着严重问题,可能是灾难性的.所以找出是什么原因造成OutOfMemoryError非常重要.现在向大家引荐Eclipse Memory Analyzer tool(MAT),来化解我们遇到的难题.如未说明,本文均使用Java 5.0 on Windows XP SP3环境. 为什么用 MAT 之前的观点,我认为使用实时profiling/monitoring之类的工具,用一种非常实时的方式来

性能分析工具之-- Eclipse Memory Analyzer tool(MAT)(一)【转】

前言 在平时工作过程中,有时会遇到OutOfMemoryError,我们知道遇到Error一般表明程序存在着严重问题,可能是灾难性的.所以找出是什么原因造成OutOfMemoryError非常重要.现在向大家引荐Eclipse Memory Analyzer tool(MAT),来化解我们遇到的难题.如未说明,本文均使用Java 5.0 on Windows XP SP3环境. 为什么用MAT 之前的观点,我认为使用实时profiling/monitoring之类的工具,用一种非常实时的方式来分

使用Eclipse Memory Analyzer Tool(MAT)分析故障

Eclipse Memory Analyzer Tool(MAT)是一个强大的基于Eclipse的内存分析工具,可以帮助我们找到内存泄露,减少内存消耗. 工作中经常会遇到一些内存溢出.内存泄露等问题,同时还可能导致CPU使用率也很高,因为在频繁的进行GC垃圾回收,这时候就需要分析导致问题的原因,MAT是一个比较好用的工具,但刚开始使用时对于其提供的一些功能还是不太了解,故在此总结一下个人觉得比较有用的一些MAT相关概念,其它功能暂时还未用到或者还没有理解使用方法,后续再补充. 以下是本文的目录大

Memory Analyzer Tool使用文档(译)

原文地址:http://www.vogella.com/tutorials/EclipseMemoryAnalyzer/article.html 本文主要阐述了,如何在eclipse中使用Memory Analyzer Tool(MAT)来分析内存泄露等问题. 文章结构:      java内存管理 本地内存 Java中的内存 Java堆 Java栈 逃逸分析 内存泄露 在Eclipse中分析内存泄露 堆转储 eclipse中的安卓堆转储分析 使用MAT(Memory Analyzer Tool

Eclipse MAT内存分析工具(Memory Analyzer Tool)

MAT内存分析工具 MAT是Memory Analyzer的简称,它是一款功能强大的Java堆内存分析器.可以用于查找内存泄露以及查看内存消耗情况.MAT是基于Eclipse开发的,是一款免费的性能分析工具.读者可以在http://www.eclipse.org/mat/下载并使用MAT. 1 初识MAT 在分析堆快照前,首先需要导出应用程序的堆快照.在本书前文中提到的jmap.JConsole和Visual VM等工具都可用于获得Java应用程序的堆快照文件.此外,MAT本身也具有这个功能.