内存分析工具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文件

jmap -dump:format=b,file=testFile.dump 16868   // 16868  是java的进程id

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

sz 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有很多种原因,结合自己程序问题解决即可

  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值