1、获取dump文件的四种方式
1.1、通过jmap生产
1.2、通过JVM参数生产
1.3、使用VisualVm 导出dump文件
1.4、使用MAT
2、下载MAT
3、导入dump文件
4、实时监控java进程
5、分析dump文件
5.1、打开信息
鼠标放灰蓝上左侧出现相关信息,方正原型空白出,左侧为空白信息
5.2、查看堆文件的信息
5.3、查看支配树,可以查看类的深堆还是浅堆
5.4、查看内存中最大的对象
5.5、查看类是否被多个加载器加载
5.6、系统预判可能会出现OOM的对象
6、查看树状图
6.1、浅堆:一个对象消耗内存的大小,不包括其他引用对象大小的计算
6.2、深堆:相当于浅堆的总和,相当于显示这个对象回收的总大小
6.3、显示包分组
6.4、查看类的引用信息:软引用,弱引用,虚引用
虚引用:用于对象回收跟踪
弱引用:发现就回收
软引用:内存不足就回收
查看排出前面三种对象是怎么引用的
6.5、hump文件比较,可查看某个类增是否很快。
对象排序分析
7、thread overview
查看系统中的Java线程
查看局部变量的信息
根据分析报告地址匹配对象
查看对象出引用和入引用
可查看引用链,查看对象是否被其他生命周期长的对象引用
先看out
再看里面的对象被谁引用incoming
只有Object 没问题,如果有其他引用就会出现OOM
看看是否改为弱引用