(一)、线上查看堆内存统计
# 命令用于打印堆内存中每个类的实例数量及其占用的内存,并且只包括活动对象(即存活的对象)
jmap -histo:live <pid># 输出到文件方便查看
jmap -histo:live 12345 > aaa.txt
(二)、下载dump文件,使用MAT进行分析
jmap -dump:live,format=b,file=heapdump.hprof <pid>
MAT分析A类的引用链
1、定位特定实例
- 安装MAT后,打开heapdump.hprof文件
- 在 Histogram 中,右键点击 A 类,选择 List Objects -> with incoming references。
- 这会列出所有 A 实例,并显示每个实例的内存地址。
2、分析特定实例的引用链
- 选中一个 A 实例,右键选择 Merge Shortest Paths to GC Roots -> Exclude Weak References。
- 这会显示从垃圾回收根(GC Root)到该类加载器实例的引用路径。
3、关注关键路径
- 在引用链中,重点查看分析