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 のオンデマンドヒープダンプを作成できます。
- ヒープダンプを作成する JVM のプロセス ID を判断します。
以下のコマンドでヒープダンプを作成します。
jcmd JAVA_PID GC.heap_dump -all=true FILENAME.hprof
$ jcmd JAVA_PID GC.heap_dump -all=true FILENAME.hprof
Copy to Clipboard Copied! これにより、ヒープダンプファイルが 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/
ディレクトリーに保存されます。