始于足下.|

MuXinu

园龄:2年7个月粉丝:3关注:1

MemoryAnalyzerTool(mat)分析dump文件

一、常见需要分析dump文件场景

1.1 fullGC频繁

1.2 堆空间溢出

1.3 元空间溢出

二、准备工具

能分析dump文件的工具很多比如Java自带的jvisualvm、商业软件Jprofile、mat(MemoryAnalyzerTool)、IDEA等,除了mat和jvisualvm其他软件不能在Linux环境分析,当dump文件很大的时候不方便,mat-linux版本可以直接在服务器上生成报告,将报告导入本地分析。本文介绍一下mat(Linux)分析dump文件的过程。

2.1 mat与JDK版本对应关系

Memory Analyzer 1.14 及更高版本 JDK17及以上
Memory Analyzer 1.12 及更高版本 JDK11及以上
Memory Analyzer 1.8 至 1.11 需要 Java 1.8 VM 或更高版本的 VM 才能运行
 
0

三、Linux-Mat分析dump流程

3.1 确认应用及环境jdk版本

选择合适版本,本例服务器是x86架构64位机器jdk版本1.8选择的mat版本是 MemoryAnalyzer-1.9.2.20200115-linux.gtk.x86_64.zip

0

3.2 获取.hprof文件

3.2.1 被动获取

新版组件一般都默认开启如下启动参数,内存溢出错误时会自动dumpJVM的内存镜像,当系统发生OOM异常时可以检查当前应用文件夹查看是否存在dump文件。
# 当应用发生oom异常时自动dump
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=gc.hprof

3.2.2 主动获取

如果启动命令没有配置以上参数,当发生OOM相关异常的时候,不要立即重启,建议先进行dump处理,操作命令如下:
jps -l ##或者 ps -aux | grep java 找到对应应用的PID

jmap -dump:live,format=b,file=dump.hprof pid   ##file=dump.hprof指定生成dump文件  pid是应用PID

3.3 调整Mat参数

编辑 MemoryAnalyzer.ini,调整mat参数,-Xmx16g一般设置为dump文件大小的二倍左右,如需指定JDK版本 ,在任何 -vmargs 行之前加入(两行)示例如下:
0
示例:
复制代码
-startup
    plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
    --launcher.library
    plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.100.v20110505
    -vm 
    /home/yangxz/java/bin/java  #指定JDK版本
    -vmargs
    -Xms16g 
    -Xmx16g  #最大堆内存
复制代码
0

3.4 执行命令生成 zip

nohup ./ParseHeapDump.sh /home/yangxz/test/sdm_oom.hprof org.eclipse.mat.api:suspects org.eclipse.mat.api:overview org.eclipse.mat.api:top_components & echo $! > pid
命令说明:
nohup ./ParseHeapDump.sh      #后台执行脚本
/home/yangxz/test/sdm_oom.hprof  #dump文件
org.eclipse.mat.api:suspects  # 生成泄漏疑点(Leak Suspects)报告
org.eclipse.mat.api:overview  # 生成堆转储概览报告。
org.eclipse.mat.api:top_components # 生成内存占用最大的组件报告。
生成压缩文件示例:
0
解压后点击Index.html进入报告:
0
报告示例:
0

四、Mat桌面版本分析dump

4.1 下载windows版本mat,并确保本地有安装好Java环境

0
打开后在File里面选择OpenHeapDump打开要分析的hprof文件
0
0
 

本文作者:MuXinu

本文链接:https://www.cnblogs.com/MuXinu/p/18660721

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   MuXinu  阅读(929)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起