当前位置: 代码网 > 科技>电脑产品>内存 > 内存分析工具mat的安装和使用(full GC 排查方法)

内存分析工具mat的安装和使用(full GC 排查方法)

2024年08月03日 内存 我要评论
使用mat工具分析full GC

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

 2、导出dump文件

 先进入服务器,使用jps命令查询运行中的java进程和进程id

   

 生成dump文件

 将生成好的testfile.dump文件导出到桌面

mat界面

 导入dump文件

查看内存占用过大的指标

可以看到bytes占用内存的22.17%

点击mat的 histogram进行查询

objects 对象个数

shallow heap 浅堆内存(对象实际占用的内存数量)

retained heap 深堆内存(可释放内存,目前没有被回收占用的内存)

 

查看占用内存多大的对象被谁引用了,点击mat的dominator tree,用来分析对象的调用链

 点击mat的thread_overview,线程简介图,这个里面有方法的调用链

分3个步骤分析即可

1、观察name、shallow heap 、retained heap指标,一般也是倒序排序

2、 查看占比最大两个即可,java.lang.thread @0xd9d01a20,可看到具体代码出现问题的行数以及对象引用链

 3、查看线程详情,选中线程点击详情thread details查看具体发生的异常信息

 

结语 

业务代码导致频繁full gc ,优化业务代码即可。发生full gc有很多种原因,结合自己程序问题解决即可

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com