MAT 是基于 Eclipse 开发的 Java 堆内存快照分析工具。
下载地址:
https://www.eclipse.org/mat/downloads.php
如果你分析的堆内存快照文件比较大,需要修改配置文件 MemoryAnalyzer.ini,我本地 -Xmx4096m,即最大堆内存给的 4G。
这几个视图使用较多:
打开文件默认显示概要
class 实例数列表
支配树视图,根据包路径分组 + 深堆逆序,就能查到占用大量内存的对象
QQL,像查 SQL 一样查实例信息
线程视图
Leak Suspects,内存泄漏猜测;也可以使用 Leak Identification - Find Leaks
几个核心概念:
显示对象时,outgoing references 指对象的引出
显示对象时,incoming references 指对象的引入
path to GC Roots,显示对象的 GC Root 对象
Shallow Heap(浅堆),对象本身的内存占用
Retained Heap(深堆),对象被垃圾回收后,能够释放的内存大小
Retained Set(保留集),上述被回收对象集合
ConstXiong 备案号:苏ICP备16009629号-3