利用MAT来分析JAVA内存泄露
如何DUMP出堆栈
手动dump
1 | jmap -dump:format=b,file=<dumpfile.hprof> <pid> |
JVM参数自动dump
1 | -XX:+HeapDumpOnOutOfMemoryError |
下载并调整MAT(Eclipse Memory Analyze Tool)
下载地址: https://www.eclipse.org/mat/downloads.php
依据不同的操作系统下载响应版本。
解析dump出的文件
通常情况下,dump出的文件是很大的。需要修改一下MemoryAnalyzer.ini,调大-Xmx
参数,至少要比要分析的文件相等。
1 | -startup |
无界面执行(LINUX)
1 | ./ParseHeapDump.sh ${dump.prof} org.eclipse.mat.api:suspects |
还支持另外两个:
1 | org.eclipse.mat.api:overview |
执行之后,产生多个zip版html。不过这个版本,没有直接分析出来的好用,有些功能有缺失。
其他线上问题常见分析工具: