Java heap dump

利用Java heap dump查找、分析问题

 
开发、应用中老是会遇到OutOfMemory异常,而且常常是过一段时间内存才被吃光,这里可以利用java heap dump出jvm内存镜像,然后再对其进行分析来查找问题。
《java heap dump触发和分析》这篇文章很好的介绍了heap dump的方法和分析的工具。
平常利用 jmap -dump:format=b,file=/path/file.hprof <pid> 这个java自带的工具来dump heap很方便,但当内存溢出问题发生的比较快的情况下,该命令就有可能来不及或无效。
这个时候 在应用启动时配置相关的参数 -XX:+HeapDumpOnOutOfMemoryError 就比较方便,当然可以再加上 - XX:HeapDumpPath= /path/file.hprof 来指定文件的输出路径。
不知道怎么用这些参数?就在你启动应用的时候加,如:
/usr/lib/jvm/java-1.6.0/bin/java -server -Xms1536m -Xmx1536m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=64m -XX:MaxPermSize=64m  -XX:+HeapDumpOnOutOfMemoryError  - XX:HeapDumpPath= /path/file.hprof  -Djava.ext.dirs=/xxx/lib/ ClassName
 
《java heap dump触发和分析》里有介绍到分析工具,个人觉得利用java自带的  $JAVA_HOME/bin/jhat -J-Xmx512m /path/file.hprof 工具看分析结果不是很友好,当然这情况紧急、身边又没工具的情况下也是一个好的选择。但个别比较推荐里面介绍的 IBM HeapAnalyzer(没用过)和 MemoryAnalyzer,关于 MemoryAnalyzer的介绍可以看下 使用 Eclipse Memory Analyzer 进行堆转储文件分析里的介绍。

猜你喜欢

转载自dreamzai2.iteye.com/blog/2267851
今日推荐