[AIX Solaris HP-UX Linux Windows][IBM i]

OutOfエラーのデフォルトの動作

IBM® Java™ 5 以降では、Java プロセスの存続期間における最初の 4 つの OutOfMemory (OOM) エラーにより、Portable Heap Dump (PHD) 形式のヒープ・ダンプ、Java ダンプ・ファイル (javacore)、およびスナップ・ダンプ・ファイルがデフォルトで生成されます。

IBM Java 6 R26 以降では、Java プロセスの存続期間の最初の OOM により、 Linux®、 AIX®上の PHD 定様式ヒープ・ダンプ、Java ダンプ・ファイル、スナップ・ダンプ・ファイル、およびオペレーティング・システム・ダンプ・コア・ファイルが生成されます。 および IBM i (javacore と混同しないようにしてください)、ユーザー・モードのミニダンプ (Windows オペレーティング・システムではフル・メモリー)、および SYSTDUMP ( z/OS®ではデフォルト)。 2 番目、3 番目、および 4 番目の OOM エラーは、PHD 定様式ヒープ・ダンプと Java ダンプ・ファイルのみを生成します。

システム・ダンプは、PHD ヒープ・ダンプのスーパーセットです。 また、システム・ダンプには、メモリーの内容 (ストリング、プリミティブ、変数名など)、スレッドとフレームのローカル側の情報、いくつかのネイティブ・メモリー情報なども含まれています。 詳しくは、 https://publib.boulder.ibm.com/httpserv/cookbook/Major_Tools-Eclipse_Memory_Analyzer_Tool.htmlを参照してください。 この追加情報によって、より大きいクラスの問題を解決して、実行中の JVM に対してより一般的な洞察を持つことができ、最終的に問題解決にかかる時間を削減できます。 IBM Java 5 R12 以前および IBM Java 6 R9 以前では、jextract ツールを使用してシステム・ダンプを後処理する必要がありました。 IBM Java の最新バージョンでは、メモリー・アナライザー・ツールなどの DTFJ 対応ツールによって、(PHD ヒープ・ダンプのように) DOM の後処理を行わずに、システム・ダンプを直接ロードすることができます。 ただし、クラッシュについては、jextract を使用する必要があります。

デフォルトの構成は、JVM 汎用引数 -Xdump:what で確認できます。 例えば、 $WAS/java/bin/java -version -Xdump:what を実行すると、以下の出力が生成されます (一部の出力は削除されます)。 特に range オプションに注意してください。
# java -version -Xdump:what
Registered dump agents
...
-Xdump:system:
    events=systhrow,
    filter=java/lang/OutOfMemoryError,
    label=... core.&Y&m&d.&H% M% S.% pid.% seq.dmp,
    range=1..1,
    priority=999,
    request=exclusive+compact+prepwalk
...
-Xdump:heap:
    events=systhrow,
    filter=java/lang/OutOfMemoryError,
    label=... heapdump.% Y% m% d.% H% M% S.% pid.% seq.phd,
    range=1..4,
    priority=500,
    request=exclusive+compact+prepwalk,
    opts=PHD
...
-Xdump:java:
    events=systhrow,
    filter=java/lang/OutOfMemoryError,
    label=... javacore.% Y% m% d.% H% M% S.% pid.% seq.txt,
    range=1..4,
    priority=400,
    request=exclusive+preempt
...
-Xdump:snap:
    events=systhrow,
    filter=java/lang/OutOfMemoryError,
    label=... Snap.% Y% m% d.% H% M% S.% pid.% seq.trc,
    range=1..4,
    priority=300,
    request=serial
注: 本書では、テキストの不適切な変換を避けるために、% 文字が出現するたびに、この例の後にブランク・スペースが追加されています。
この構成は、-Xdump (https://www.ibm.com/docs/en/SSYKE2_8.0.0/openj9/xdump/index.html#default-dump-agents) 汎用 JVM 引数 (http://www-01.ibm.com/support/docview.wss?uid=swg21417365) を使用して変更できます。
  • OOM の元の動作に戻すには、以下を使用します。
    -Xdump:system:none -Xdump:system:events=gpf+abort+traceassert+corruptcache
    
  • OOM の PHD ヒープ・ダンプを削除するには、以下を使用します。
    -Xdump:heap:none
    
  • OOM の PHD ヒープ・ダンプを削除して、最初の OOM だけではなく最初の 4 つの OOM でシステム・ダンプを取るには、以下を使用します。
    -Xdump:heap:none 
    -Xdump:system:none 
    -Xdump:system:events=gpf+abort+traceassert+corruptcache 
    -Xdump:system:events=systhrow,filter=java/lang/OutOfMemoryError,range=1..4,request=exclusive+compact+prepwalk
以下に示すように、切り捨てられないシステム・ダンプを生成するようオペレーティング・システムが適切に構成されている状態にする必要があります。
システム・ダンプは、-Xdump の file パラメーターによって指定された場所に書き込まれます (前述の -Xdump:what のラベル属性を参照してください)。 これを、十分なスペースがある専用パーティションに変更する必要があります。 以下に例を示します。
-Xdump:directory=/var/dumps/