1、安装
下载地址:Eclipse Memory Analyzer Open Source Project | The Eclipse Foundationhttps://www.eclipse.org/mat/downloads.php
下载后解压,点击MemoryAnalyzer.exe进行启动
mat启动是需要jdk11或者更高的版本,我本地jdk版本是1.8,所以会报jdk版本不适合
解决方法:在MemoryAnalyzer.ini 中加入指定jdk的地址, (jdk不用安装直接下载 解压指定bin/javaw.exe就可)
-vm
D:/software/jdk-11.0.18_windows-x64_bin/jdk-11.0.18/bin/javaw.exe
先进入服务器,使用jps命令查询运行中的java进程和进程id
jmap –dump:format=b,file=testFile.dump 16868 // 16868 是java的进程id
Shallow Heap 浅堆内存(对象实际占用的内存数量)
Retained Heap 深堆内存(可释放内存,目前没有被回收占用的内存)
查看占用内存多大的对象被谁引用了,点击mat的Dominator tree,用来分析对象的调用链
点击mat的thread_overview,线程简介图,这个里面有方法的调用链
1、观察name、shallow heap 、retained heap指标,一般也是倒序排序
2、 查看占比最大两个即可,java.lang.Thread @0xd9d01a20,可看到具体代码出现问题的行数以及对象引用链
3、查看线程详情,选中线程点击详情Thread Details查看具体发生的异常信息
结语
业务代码导致频繁full gc ,优化业务代码即可。发生full gc有很多种原因,结合自己程序问题解决即可
原文地址:https://blog.csdn.net/qq_15874209/article/details/128846884
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_33026.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!