3.2. Java ヒープダンプ

Java ヒープダンプは、特定時に作成された JVM ヒープのスナップショットです。ヒープダンプの作成および分析は、Java アプリケーションの問題の分析やトラブルシューティングに役立つことがあります。

JBoss EAP プロセスの Java ヒープダンプの作成および分析方法は、使用している JDK に応じて異なります。ここでは、Oracle JDK、OpenJDK、および IBM JDK での一般的な方法を取り上げます。

3.2.1. ヒープダンプの作成

3.2.1.1. OpenJDK および Oracle JDK

オンデマンドヒープダンプの作成

jcmd コマンドを使用すると、OpenJDK または Oracle JDK で実行している JBoss EAP のオンデマンドヒープダンプを作成できます。

  1. ヒープダンプを作成する JVM のプロセス ID を判断します。
  2. 以下のコマンドでヒープダンプを作成します。

    $ jcmd JAVA_PID GC.heap_dump -all=true FILENAME.hprof

    これにより、ヒープダンプファイルが HPROF 形式で作成され、通常 EAP_HOME または EAP_HOME/bin に格納されます。代わりに、別のディレクトリーへのファイルパスを指定することもできます。

OutOfMemoryError での自動的なヒープダンプの作成

-XX:+HeapDumpOnOutOfMemoryError JVM オプションを使用すると、OutOfMemoryError 例外の発生時に自動的にヒープダンプを作成することができます。

これにより、ヒープダンプファイルが HPROF 形式で作成され、通常 EAP_HOME または EAP_HOME/bin に格納されます。代わりに、-XX:HeapDumpPath=/path/ を使用してヒープダンプのカスタムパスを設定することもできます。-XX:HeapDumpPath=/path/filename.hprof のように -XX:HeapDumpPath を使用してファイル名を指定すると、ヒープダンプはお互いに上書きされます。

JVM オプションを適用する方法は、JBoss EAP設定ガイド(スタンドアロンサーバーへの適用 または 管理対象ドメインのサーバーへの適用) を参照してください。

3.2.1.2. IBM JDK

IBM JDK を使用している場合、ヒープダンプは OutOfMemoryError の発生時に自動的に生成されます。

IBM JDK のヒープダンプは、portable heap dump (PHD) 形式ファイルとして /tmp/ ディレクトリーに保存されます。