使用MAT(MemoryAnalyzerTools)进行内存分析

使用MAT(MemoryAnalyzerTools)进行内存分析

一、导出dump文件

当使用mat进行内存分析时,需先准备好内存dump文件,dump文件可以记录文件时点快照,以便防止服务重启后无法复现问题。
导出dump文件命令:
jmap -dump:live,format=b,file=huixuexi_master_99%.hprof
如导出dump文件时遇到附着进程ID失败的问题,可以通过强制生成dump命令:
jmap -F -dump:live,format=b,file=huixuexi_master_99%.hprof

二、使用mat分析dump文件

1、首先根据dump文件大小调节mat内存,打开mat初始化文件MemoryAnalyzer.ini,将启动内存调整至比dump大的适当大小,例如-Xmx1024m
2、然后双击MemoryAnalyzer.exe打开mat
使用MAT(MemoryAnalyzerTools)进行内存分析_第1张图片

3、在mat中打开需分析的dump文件
点击file -> open heap dump 选择需分析的dump文件
使用MAT(MemoryAnalyzerTools)进行内存分析_第2张图片
使用MAT(MemoryAnalyzerTools)进行内存分析_第3张图片
使用MAT(MemoryAnalyzerTools)进行内存分析_第4张图片

4、导入后mat会提供首次分析报告
这时可以大概看出内存中存在的问题,此处可以初步定位到内存异常的信息,但是具体问题定位还需继续进行分析
使用MAT(MemoryAnalyzerTools)进行内存分析_第5张图片
使用MAT(MemoryAnalyzerTools)进行内存分析_第6张图片
5、分析具体内存信息
使用MAT(MemoryAnalyzerTools)进行内存分析_第7张图片
使用MAT(MemoryAnalyzerTools)进行内存分析_第8张图片
使用MAT(MemoryAnalyzerTools)进行内存分析_第9张图片
6、如果有两份不同状态的dump文件,可以使用对比功能进行对比
再次按照之前步骤导入另一份dump文件,然后进入Histogram页面点击对比箭头即可看到两份dump的内存对比
使用MAT(MemoryAnalyzerTools)进行内存分析_第10张图片
使用MAT(MemoryAnalyzerTools)进行内存分析_第11张图片
使用MAT(MemoryAnalyzerTools)进行内存分析_第12张图片
7、如想根据目录看业务代码的内存情况,可以按照包进行分组
点击group result by 然后选择group by package
使用MAT(MemoryAnalyzerTools)进行内存分析_第13张图片

三、mat工具官方下载地址https://www.eclipse.org/mat/previousReleases.php适用于

如无法下载,可以使用百度网盘下载(只适用于jdk1.8),地址:
链接:https://pan.baidu.com/s/1sw6zM6T0-hPlSEYohxNIAQ
提取码:6v0n

你可能感兴趣的:(Java,jvm,java,jvm)