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文件

jmapdump: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,用来分析对象调用

 点击matthread_overview线程简介图,这个里面方法调用

分3个步骤分析即可

1、观察nameshallow 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进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注