目录
MAT(Memory Analyzer Tool)是一款用于Java应用程序内存分析的开源工具。它主要用于识别和解决Java应用程序中的内存泄漏和性能问题。
博主在文章:为了记录P98导致系统崩了?-CSDN博客中为了排查系统吞吐量问题也是用的MAT分析线程栈找到的系统卡点,是一款非常好用的堆转储分析工具。对了,补充一点,如果dump的内存文件较大,需要修改MAT的缓存容量哦,有需要的话,具体操作百度就行了。
下载
Eclipse Memory Analyzer (MAT) 下载
直接解压运行
生成Dump文件
jmap -dump:live,format=b,file=[fileName] [javaPid]
注意运行命令时请使用运行java进程的user操作,或使用sudo -u [userName]
打开Dump文件
Overview![](https://img-blog.csdnimg.cn/direct/8bc410bf97cb4dacbdb1dd577b0f6efa.png)
Histogram(直方图)
展示内存中所有类的对象个数以及所有对象的大小总和
Dominator Tree(支配树)
展示内存中所有对象的大小以及内存占比
Top Consumers
通过饼图的方式展示内存中所有对象的大小以及内存占比
Leak Suspects
MAT内存泄漏分析,可自动分析内存泄漏可疑点
Thread Overview
展示正在运行中所有的线程基本信息,以及线程栈
名词解释
Shallow Heap
就是对象本身占用内存的大小,不包含对其他对象的引用,也就是对象头加成员变量(不是成员变量的值)的总和;
Retained Heap
是该对象自己的Shallow Heap,加上从该对象能直接或间接访问到对象的Shallow Heap之和。Retained Heap是该对象被GC之后所能回收到内存的总和。