快速生成和分析Dump文件

·  阅读 290

dump文件一般较大,在本地分析需要等待较长时间,在这里分析使用在Linux的MAT工具直接在虚拟机上进行快速分析。

1. 使用Jmap命令生成dump文件
${JAVA_HOME}/jmap.exe -dump:format=b,file=${FILE_PATH}/dump.prof  pid
复制代码

ps: FILE_PATH 需要提前新增

2.Linux安装MAT

MAT工具下载链接

解压MAT
unzip MemoryAnalyzer-1.8.0.20180604-linux.gtk.x86_64.zip
复制代码
配置MAT参数
## 修改MAT的内存大小, 注意这个大小要根据你dump文件大小来的,如果dump文件是5GB那么 这里最好配>5GB 否则会报MAT内存不足的异常
## 修改MemoryAnalyzer.ini 的 -Xmx6024m 
vi MemoryAnalyzer.ini
复制代码
3.使用MAT分析
找到MAT的安装目录,执行下面命令
./ParseHeapDump.sh jmap.info  org.eclipse.mat.api:suspects org.eclipse.mat.api:overview org.eclipse.mat.api:top_components
复制代码
等待执行结果

结果会生产如下三个zip文件,很小可以直接拷贝到本机

jmap_Leak_Suspects.zip
jmap_System_Overview.zip
jmap_Top_Components.zip
复制代码
4. MAT结果分析

从结果OverView上,得知很有可能a存在内存泄漏。

image-20210912141623852

由此找到pool-24-thread-2线程, 可轻易找到异常日志。

image-20210912141943622

PS: 线上JVM配置:
#出现 OOME 时生成堆 dump:
-XX:+HeapDumpOnOutOfMemoryError
#生成堆文件地址:
-XX:HeapDumpPath=/home/liuke/jvmlogs/
复制代码

\

分类:
后端
标签:
分类:
后端
标签:
收藏成功!
已添加到「」, 点击更改