2017年3月9日木曜日

Memory Analyzer / Out of Memory Error

Memory Analyzerがヒープダンプを読むときにメモリ不足で落ちる減少を解消します。

経緯:
Java(Scala)アプリの開発をしているときに、大きめのヒープダンプを取ってMemory Analyzerに読み込ませようとしたら、アラートが出ました。内容は以下のような感じです。
Parsing heap dump from /User/yako/Desktop/heapdump.hprof 17.57.52 has encountered a problem.
An internal error occurred during: "Parsing heap dump from '/Users/yako/Desktop/heapdump.hprof 17.57.52'".
GC overhead limit exceeded

解決方法:
Memory Analyzer起動時に、もっとメモリを持たせてあげれば良いです。

1) jmapでヒープダンプを取得。
$ jmap -dump:format=b,file=./heapdump.hprof PID
2) Memory Analyzerを起動。
$ ./mat.app/Contents/MacOS/MemoryAnalyzer -vmargs -Xmx4g -XX:-UseGCOverheadLimit


環境: macOS Sierra

参考資料)
MemoryAnalyzer/FAQ - Eclipsepedia
https://wiki.eclipse.org/MemoryAnalyzer/FAQ