ソーシャルネットワーク事業部の、jyukutyoこと阪田です。僕らのアプリケーションでOutOfMemoryError(OOME)が発生しました!ログからある程度原因は推測できましたが、確信は持てません。そこでヒープダンプを解析することにしました。前提よく言われていることですので確認にはなりますが、JVMの起動オプションに必ず-XX:-HeapDumpOnOutOfMemoryErrorをつけましょう。これでOOME発生時に自動的にヒープダンプが取られます。OOME発生後はJVMの動作は保証されませんので、発生したら必ずJVMを再起動しましょう!本題OOMEが発生したサーバに入ると、ヒープダンプがファイルとして出力されています。Javaを実行したディレクトリに「java_pid9999.hprof」という形式のファイルがあります。大きいサイズのファイルで、今回は4.3GBでした。ヒープダンプの内容から分析したいのですが、ヒープダンプの解析はツールの助けを借りなければとても進められません。Analyzer(mat)」を使うことにしました。matはhttps://eclipse.org/mat/からダウンロードできます。Managerからインストールすることもできますし、スタンドアローン版もあります。今回はスタンドアローン版を使いました。実際に起きたOOMEのヒープダンプを使いながら、matを使って分析していきたいと思います!matを起動すると、以下のような画面が表示されます。Dumpでヒープダンプのファイルを選択します。Report」を選びます。今回はメモリリークを疑っているためです。解析処理が走った後、Overview画面が表示されます。リークの疑いがどこにあるのか見てみましょう。Suspectsをクリックしてください。Suspects画面が表示されます。Susp...(Suspect)」となっています。