Hitachi

Cosminexus V11 アプリケーションサーバ リファレンス 定義編(サーバ定義)


-XX:[+|-]HitachiOutOfMemoryHandling(OutOfMemoryハンドリングオプション)

〈このページの構成〉

形式

-XX:+HitachiOutOfMemoryHandling

OutOfMemoryハンドリング機能を有効にします。

-XX:-HitachiOutOfMemoryHandling

OutOfMemoryハンドリング機能を無効にします。

説明

OutOfMemoryハンドリング機能を有効にするかどうかを指定します。このオプションは,J2EEサーバをJ2EEサーバモードで実行した場合にだけ有効です。

OutOfMemoryハンドリング機能は,OutOfMemory発生時強制終了機能(-XX:+HitachiOutOfMemoryAbort)と組み合わせて使用します。OutOfMemory発生時強制終了機能が無効(-XX:-HitachiOutOfMemoryAbort)になっている場合,OutOfMemoryハンドリング機能は無効になります。

OutOfMemoryハンドリング機能を有効にした場合,OutOfMemory発生時にOutOfMemoryErrorスロー条件が判定されます。具体的には,次に示す処理を実行中にJavaヒープ不足やMetaspace領域,Compressed Class Space不足が原因のOutOfMemoryが発生した場合に,J2EEサーバの実行を継続するかどうかが判定されます。

判定の結果,J2EEサーバの実行が継続される場合は,java.lang.OutOfMemoryErrorがスローされて,OutOfMemoryが発生したリクエスト処理だけが中止されます。

JavaVMは,判定結果によって次のように動作します。ただし,Webアプリケーションでjava.lang.OutOfMemoryErrorをキャッチしている場合は,その処理に従います。

OutOfMemoryErrorスロー条件を次に示します。なお,OutOfMemoryErrorスロー条件に合致しない場合,OutOfMemory発生時強制終了機能によって,JavaVMは強制終了します。

OutOfMemoryErrorスロー条件

OutOfMemoryが発生した場合に,次に示す条件すべてに該当するとき,JavaVMはOutOfMemoryErrorスロー条件を満たしているものと判定して,異常終了しないでjava.lang.OutOfMemoryErrorをスローします。

  • Javaヒープ不足,またはMetaspace領域,Compressed Class Space不足が原因のOutOfMemoryである。

  • Webコンテナ上のWebアプリケーション(Servlet/JSP)が実行中のリクエスト処理,EJBクライアントアプリケーションから呼び出されたEnterprise Beanが実行中の処理,Message-driven Beanが実行中の処理,またはTimer Serviceから呼び出されたEnterprise Beanが実行中の処理で発生したOutOfMemoryである。

  • OutOfMemoryErrorスロー除外条件に該当しない。

OutOfMemoryErrorスロー除外条件

今回のOutOfMemoryが発生した時刻から過去1時間以内のJavaヒープ不足が原因のOutOfMemoryの発生回数とMetaspace領域,Compressed Class Space不足が原因のOutOfMemoryの発生回数の合計値(今回のOutOfMemoryを含む)が,-XX:HitachiOutOfMemoryHandlingMaxThrowCountオプション値に指定した値よりも大きい。

OutOfMemory発生時強制終了機能とOutOfMemoryハンドリング機能のOutOfMemory発生要因ごとの動作を次の表に示します。OutOfMemoryハンドリング機能が有効かどうかは,OutOfMemoryの発生原因がJavaヒープ不足またはMetaspace領域,Compressed Class Space不足の場合の動作に影響します。

表14‒8 OutOfMemory発生時強制終了機能とOutOfMemoryハンドリング機能のOutOfMemory発生要因ごとの動作

OutOfMemory発生要因

OutOfMemory発生時強制終了機能の対象となるかどうか

(OutOfMemory発生時の動作※1

OutOfMemoryハンドリング機能の対象となるかどうか

(OutOfMemory発生時の動作)

Javaヒープ不足

対象になります

(JavaVMは強制終了します)。

対象になります

(判定結果に従って動作します※2)。

Metaspace領域不足

対象になります

(JavaVMは強制終了します)。

対象になります

(判定結果に従って動作します※2)。

Compressed Class Space不足

対象になります

(JavaVMは強制終了します)。

対象になります

(判定結果に従って動作します※2)。

Cヒープ不足

対象になります

(JavaVMは強制終了します)。

対象になりません

(JavaVMは強制終了します※3)。

Unkown

対象になりません

(java.lang.OutOfMemoryErrorがスローされます)。

対象になりません

(java.lang.OutOfMemoryErrorがスローされます)。

Thread Limit

対象になりません

(java.lang.OutOfMemoryErrorがスローされます)。

対象になりません

(java.lang.OutOfMemoryErrorがスローされます)。

注※1 OutOfMemoryハンドリング機能は無効(-XX:-HitachiOutOfMemoryHandling)の場合の動作です。

注※2 OutOfMemoryErrorスロー条件を満たしている場合,java.lang.OutOfMemoryErrorがスローされます。OutOfMemoryErrorスロー条件を満たしていない場合,OutOfMemory発生時強制終了機能の処理に移行して,JavaVMは強制終了します。

注※3 OutOfMemory発生時強制終了機能によって,JavaVMは強制終了します。

また,OutOfMemoryハンドリング機能が有効な場合,Javaヒープ不足,およびMetaspace領域,Compressed Class Space不足が原因のOutOfMemory発生時にOutOfMemoryの発生頻度に関する情報がJavaVMログファイルに出力されます。

デフォルト値
  • -XX:-HitachiOutOfMemoryHandling

前提オプション
  • -XX:+HitachiOutOfMemoryAbort

出力形式

[id][Thread: thread_id]<date>[Handling: oom_count(max_oom_count)]

出力内容を次に説明します。

id

OMH(JavaVMログファイル識別子)。

thread_id

スレッドID(スレッドダンプに出力されているtid)。

date

OutOfMemoryをハンドリングした日時。

oom_count

今回のOutOfMemoryが発生した時刻から過去1時間以内の,Javaヒープ不足が原因のOutOfMemoryの発生回数とMetaspace領域,Compressed Class Space不足が原因のOutOfMemoryの発生回数の合計値(今回のOutOfMemoryを含む)。

ただし,今回のOutOfMemoryも含めて,1時間以内の発生回数の合計値が3601を超えた場合でも,出力項目の最大値は3601になります。

max_oom_count

-XX:HitachiOutOfMemoryHandlingMaxThrowCountオプションに指定した値。

出力例

[OMH][Thread: 0x00927f48]<Tue Aug 24 19:02:19 2010>[Handling: 1(60)]

注意事項