本文主要是介绍linux 安装MAT(MemoryAnalyzerTool),并且分析java dump的方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
当我们的java进程出现异常的时候,我们第一件想做的事情是什么呢?应该就是要分析java的内存了。假如说,我们已经有了一个java内存的dump文件,有哪些的方法,可以对这个导出的dump文件进行分析呢?
比如,jhat,mat··· ····
但是,其中最能够查明问题的,恐怕就是MAT这个工具了,那么在接下来的部分中,我们就来看看如何在linux环境中,安装、配置mat,并且用这个工具来分析dump文件······
安装
- 获取安装包
通过以下地址,获取MAT最新的安装包
Eclipse Memory Analyzer Open Source Project | The Eclipse Foundation
- 将安装包上传到服务器上
[root@nccztsjb-node-27 data]# pwd /data [root@nccztsjb-node-27 data]# ls -l MemoryAnalyzer-1.12.0.20210602-linux.gtk.x86_64.zip -rw-r--r-- 1 root root 82304050 Jun 10 16:10 MemoryAnalyzer-1.12.0.20210602-linux.gtk.x86_64.zip
- 解压安装包
unzip MemoryAnalyzer-1.12.0.20210602-linux.gtk.x86_64.zip# 生成MAT目录 [root@nccztsjb-node-27 data]# ls -l | grep mat drwxr-xr-x 6 root root 179 Jun 20 2021 mat
- 设置jdk
MAT的运行需要jdk,这里需要的jdk11以上,安装jdk的过程不赘述。
配置
在配置的部分,我们主要配置的是ParseHeapDump.sh脚本中的内存参数
在脚本的最后一行的最后面,加上如下的参数
-vmargs -Xmx30g -XX:-UseGCOverheadLimit
具体的内存的大小,要根据dump的大小来修改,设置的太小会出现OOM的情况。
分析dump文件及生成报告
接下来,我们就是要通过ParseHeapDump.sh来分析dump文件
命令如下:
ParseHeapDump.sh <path/to/dump.hprof> [report]*
示例:
./mat/ParseHeapDump.sh ./gl.hprof org.eclipse.mat.api:suspects
执行过程,如下:
[root@ncc data]# ./mat/ParseHeapDump.sh ./gl.hprof org.eclipse.mat.api:suspects WARNING: A terminally deprecated method in java.lang.System has been called WARNING: System::setSecurityManager has been called by org.eclipse.osgi.internal.framework.SystemBundleActivator (file:/data/mat/plugins/org.eclipse.osgi_3.16.300.v20210525-1715.jar) WARNING: Please consider reporting this to the maintainers of org.eclipse.osgi.internal.framework.SystemBundleActivator WARNING: System::setSecurityManager will be removed in a future release Task: Parsing gl.hprof [Task: Parsing /data/./gl.hprof [ Subtask: Scanning /data/./gl.hprof [ [INFO] Detected compressed references, because with uncompressed 64-bit references the array at 0x7216eff10 would overlap the array at 0x7216ef5e0 [.
执行完成后,会生成一个报告的文件,将这个文件,解压到本地电脑,通过浏览器就可以进行查看,比如:
就可以看到内存泄露的点,然后再依此进行问题的排查即可。
这篇关于linux 安装MAT(MemoryAnalyzerTool),并且分析java dump的方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!