eclipse MAT jvm内存分析工具

最近在生产上出现了一次oom,服务器一天爆一次,怀疑内存泄露了,

于是使用Eclipse Memory Analysis Tools工具进行查找

1.先获取内存信息文件

查看程序的pid:  jps -l 

转储内存文件 : jmap -dump:live,format=b,file=heap.hprof 1111

live:活动的;b:表示二进制格式;heap.hprof 文件名.hprof文件后缀;

1111:程序pid

2.安装MAT

在eclipse中点击help->Eclipse Marketplace 输入MAT,搜索下载Memory Analyzer


3.导入内存信息文件hprof开始查找

导入前最好建一个文件夹放刚才的.hprof文件,因为导入后会生成很多文件

在eclipse的File->Open File 导入刚才的文件


finish后会有一个报告看


4.开始找问题

看泄露报告提示的问题点击下方的class 查找包含的引用


打开后,红色框class Name可以用正则匹配类名,shallow heap表示对象自身占用的内存大小,

retained heap表示对象直接或者间接引用的对象大小总和 点击可以进行大小排序

然后点击某个实例,右击path to GC Roots->exclue all phantom/weak/soft etc. refecence 查看未能被回收的实例


然后发现出现问题的类,点击进去查看未被释放的类,然后回到代码中修改

我这问题比较明显,比较容易找出。以下链接更全面

参考:内存分析工具 MAT 的使用 -

mat(Eclipse Memory Analyzer tool)之二--heap dump分析 - duanxz - 博客园

https://blog.csdn.net/zhongwen7710/article/details/39213377

你可能感兴趣的:(eclipse MAT jvm内存分析工具)