Cosminexus アプリケーションサーバ V8 リファレンス 定義編(サーバ定義)
-XX:[+|-]HitachiOutOfMemoryHandling(OutOfMemoryハンドリングオプション)
形式
説明
OutOfMemoryハンドリング機能を有効にするかどうかを指定します。このオプションは,J2EEサーバをJ2EEサーバモードで実行した場合にだけ有効です。
OutOfMemoryハンドリング機能は,OutOfMemory発生時強制終了機能(-XX:+HitachiOutOfMemoryAbort)と組み合わせて使用します。OutOfMemory発生時強制終了機能が無効(-XX:-HitachiOutOfMemoryAbort)になっている場合,OutOfMemoryハンドリング機能は無効になります。
OutOfMemoryハンドリング機能を有効にした場合,OutOfMemory発生時にOutOfMemoryErrorスロー条件が判定されます。具体的には,次に示す処理を実行中にJavaヒープ不足やPermヒープ不足が原因のOutOfMemoryが発生した場合に,J2EEサーバの実行を継続するかどうかが判定されます。
判定の結果,J2EEサーバの実行が継続される場合は,java.lang.OutOfMemoryErrorがスローされて,OutOfMemoryが発生したリクエスト処理だけが中止されます。
JavaVMは,判定結果によって次のように動作します。ただし,Webアプリケーションでjava.lang.OutOfMemoryErrorをキャッチしている場合は,その処理に従います。
OutOfMemoryErrorスロー条件を次に示します。なお,OutOfMemoryErrorスロー条件に合致しない場合,OutOfMemory発生時強制終了機能によって,JavaVMは強制終了します。
OutOfMemory発生時強制終了機能とOutOfMemoryハンドリング機能のOutOfMemory発生要因ごとの動作を次の表に示します。OutOfMemoryハンドリング機能が有効かどうかは,OutOfMemoryの発生原因がJavaヒープ不足またはPermヒープ不足の場合の動作に影響します。
表19-8 OutOfMemory発生時強制終了機能とOutOfMemoryハンドリング機能のOutOfMemory発生要因ごとの動作
OutOfMemory発生要因 | OutOfMemory発生時強制終了機能の対象となるかどうか (OutOfMemory発生時の動作※1) |
OutOfMemoryハンドリング機能の対象となるかどうか (OutOfMemory発生時の動作) |
---|---|---|
Javaヒープ不足 | 対象になります (JavaVMは強制終了します)。 |
対象になります (判定結果に従って動作します※2)。 |
Permヒープ不足 | 対象になります (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ヒープ不足,およびPermヒープ不足が原因のOutOfMemory発生時にOutOfMemoryの発生頻度に関する情報が日立JavaVMログファイルに出力されます。
出力形式
[id][Thread: thread_id]<date>[Handling: oom_count(max_oom_count)] |
出力内容を次に説明します。
出力例
[OMH][Thread: 0x00927f48]<Tue Aug 24 19:02:19 2010>[Handling: 1(60)] |
注意事項
OutOfMemoryハンドリング機能は,OutOfMemoryの根本原因を解決したり,OutOfMemory発生によるJ2EEサーバの終了を確実に回避したりする機能ではありません。また,OutOfMemory発生後にJ2EEサーバの実行を継続できることを確実に保証する機能でもありません。この機能は,ユーザープログラム処理の問題による突発的なOutOfMemoryが発生した場合に,J2EEサーバの終了を一時的に防ぐための機能です。
java.lang.OutOfMemoryErrorは,OutOfMemoryハンドリング機能の設定に関係なく,ヒープが枯渇している場合に発生します。java.lang.OutOfMemoryErrorが発生した場合には,J2EEサーバをできるだけ速やかに再起動して回復すること,そのあとでOutOfMemoryの根本原因を解決することを推奨します。
なお,java.lang.OutOfMemoryErrorをスローすることによって,リソースのリークやロックなどが発生し,J2EEサーバに予期しない動作が発生するおそれがあります。このため,この機能を有効にしている場合にOutOfMemoryが発生したときには,適切なタイミングでJ2EEサーバを再起動する運用にしてください。また,J2EEサーバに予期しない動作が発生することを避けたい場合は,この機能を無効にしてください。この場合,突発的なOutOfMemoryが発生したときには,J2EEサーバは終了します。
この機能を有効にした場合に,予期しない動作になってしまったときは,J2EEサーバを再起動してください。また,その後の運用ではこの機能を無効にしてください。
All Rights Reserved. Copyright (C) 2008, 2011, Hitachi, Ltd.