一、简介
MAT(Memory Analyzer Tool)工具是java堆内存分析器。可以用于查找内存泄漏以及查看内存消耗情况。MAT是Eclipse开发的免费的性能分析工具。
下载链接https://www.eclipse.org/mat/downloads.php
二、安装常见问题
1. 仅支持JDK17及以上版本
点击安装提示如下信息,当前默认JDK版本不满足要求
解决方法:
- 下载更低MAT版本支持目前计算机已存在的JDK版本
- 计算机存在JDK版本大于等于17,修改MAT配置文件
修改MemoryAnalyzer.ini文件,路径为高版本JDK的javaw.exe路径,重新启动即可
加入
-vm
C:\MySoftware\JDK18\bin\javaw.exe
三、dump文件生成方式
1.命令主动生成
- top查看需要生成dump文件的进程号
- 调用jmap命令生成文件,file后面为生成的文件名称,1246为进程号
jmap -dump:format=b,file=user.dump 1246
2.OOM自动生成
启动java程序时添加参数,当内存溢出时自动生成dump文件
HeapDumpPath后面为生成文件路径
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=D:\tmp
测试时可以指定较小堆内存空间,程序模拟OOM,查看现象
java程序启动时设置堆内存大小为32M,-Xms为指定JVM堆的初始大小,-Xmx为指定JVM堆的最大值
-Xms32M -Xmx32M
启动程序(&后台运行,> log.file 2>&1输出标准日志和错误日志到log.file,nohup且不受终端断连影响)
nohup java -jar -Xms32M -Xmx32M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/local user-0.0.1-SNAPSHOT.jar > log.file 2>&1 &