1.Eclipse Memory Analyzer(简称MAT)是一个功能丰富且操作简单的JVM Heap Dump分析工具,可以用来辅助发现内存泄漏减少内存占用。
2.简单使用
2.1.启动之后打开 File - Open Heap Dump… 菜单,然后选择生成的Heap DUmp文件,选择 “Leak Suspects Report”,然后点击 “Finish” 按钮。
2.2.操作完成之后会显示如图所示界面
1.问题出现的原因是:main线程(线程号为:0xf6560000)中有一个局部变量(数组类型)占用内存达到了243,270,680字节,占用了总的堆内存的99.92%,导致了OOM
2.Keywords:问题是出现在OtherTest类的main方法中的第16行
2.3.点击Details查看详细信息
1.可以看到,问题出现在java.util.ArrayList中
2.可以继续查看其他功能,例如Thread Properties、Thread Stack(同样是包含在Details中的)
2.1.查看Thead Properties功能的详细信息
该线程占用的堆大小
2.2.查看Thead Stack功能
查看线程的栈信息,可以看到问题出现在OtherTest类的main方法的第16行
其他功能使用
在overview页面
选中这个,点击进去能看到对象的引用树,以及对象占用内存的大小(shallow heap,retained heap,可以参考:https://blog.csdn.net/wwlwwy89/article/details/74330544)
点进去可以看到类似这种,
如上图标记所示,后面后thread标记的活着 前面有这个符号的,都可以进行如下操作
可以看到该线程的堆栈信息,如果是oom的场景下(假如是该线程导致的oom),就可以利用堆栈信息查看问题出现的详细原因