如果你的Heap Dump文件超过了几百MB,那就不要再寄希望于jhat了,因为jhat需要数倍于dump文件的内存。这个时候你可以用MAT(Memory Analyzer),用MAT你可以在有2GB可用内存的机器上分析大约1GB左右的Dump文件。
JMAP(Java Memory Map)
方法一:让运行中的JVM生成Dump文件
/usr/java/jdk/bin/jmap -F -dump:format=b,file=/path/to/heap/dump/heap.bin PID
注意:1.jmap的路径也就是jdk的路径要找对,是当前运行应用的所启动的jvm的jdk.
2.file是放置生成文件的路径。
例如:
/opt/xx/xx/jdk/linux64/bin/jmap -F -dump:format=b,file=/opt/xx/xx/dump/heap.bin 19601.
方法二:让JVM在遇到OOM(OutOfMemoryError)时生成Dump文件
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/heap/dump
用jhat分析Dump文件
注:只有在Dump文件比较小的时候才适合用jhat分析Dump文件
jhat(Java Heap Analysis Tool)
jhat -stack false -refs false -J-Xmx2g /path/to/heap/dump/heap.bin
用MAT分析Dump文件
MAT(Memory Analyzer)
http://www.eclipse.org/mat/
安装MAT插件