-XX:[+|-]HitachiOutOfMemoryStackTrace(スタックトレース出力オプション)
形式
- -XX:+HitachiOutOfMemoryStackTrace
-
OutOfMemoryError発生時に,例外情報とスタックトレースをJavaVMログファイルに出力します。
スタックトレースは1スタックごとにバッファに格納し,コード変換した後に出力します。スタックトレースの出力は,OutOfMemoryErrorがスローされるたびに行われるため,OutOfMemoryErrorをキャッチして再スローした場合には複数回出力されます。なお,スレッド作成時にOutOfMemoryErrorとなった場合は,スタックトレースは出力されません。
- -XX:-HitachiOutOfMemoryStackTrace
-
OutOfMemoryError発生時に,スタックトレースをJavaVMログファイルに出力しません。
説明
OutOfMemoryError発生時に,例外情報とスタックトレースをJavaVMログファイルに出力するかどうかを指定します。
- デフォルト値
-
-
-XX:-HitachiOutOfMemoryStackTrace
-
出力形式
[id] [Thread:thread_id]<date>[java.lang.OutOfMemoryError : requested size bytes (cause) : reason : thread_count threads exist] [id] [Thread:thread_id] stack_trace
出力内容を次に説明します。
- id
-
OOM(JavaVMログファイル識別子)。
- thread_id
-
スレッドID(スレッドダンプに出力されているtid)。
- date
-
OutOfMemory例外発生日時。
- size
-
確保しようとしたメモリのサイズ(単位:バイト)が出力されます。-XX:-HitachiOutOfMemorySizeオプションが指定されている場合,出力されません。
なお,次の場合は要求したメモリサイズが取り出せません。これらの場合は,サイズとして「unknown」が出力されます。
-
Javaのメモリ確保機能を使用しないで,明示的にOutOfMemoryErrorをスローした場合
標準クラスライブラリによってスローされるものも含みます。例えば,「throw new OutOfMemoryError();」などの処理によってスローされた場合,メモリサイズは出力できません。
-
クラスロード時のverifierによってOutOfMemoryErrorが発生した場合
-
- cause
-
例外発生要因種別。ただし,-XX:-HitachiOutOfMemoryCauseオプションが指定されている場合は出力されません。例外発生要因種別については,「-XX:[+|-]HitachiOutOfMemoryCause(例外発生要因種別出力オプション)」を参照してください。
- reason
-
例外発生理由。スレッドの作成に失敗した場合に出力されます。
- thread_count
-
OutOfMemoryError発生時のスレッド数。作成に失敗したスレッド数も含みます。
- stack_trace
-
スタックトレース
出力例
[OOM][Thread: 0x00062fd0] <Wed Mar 17 00:41:17 2004>[java.lang.OutOfMemoryError :requested 400000 bytes.(C Heap): unable to create thread : 1500 threads exist] [OOM][Thread: 0x00062fd0] at java.lang.Thread.start(Native Method) [OOM][Thread: 0x00062fd0] at sub1.<init>(Thread0012.java:22) [OOM][Thread: 0x00062fd0] at Thread0012.test01(Thread0012.java:73) [OOM][Thread: 0x00062fd0] at Thread0012.main(Thread0012.java:57)
注意事項
JavaVM自身で作成するスレッドが,メモリ不足によってスレッドの作成に失敗した場合は,例外情報だけが出力されます。スタックトレースは出力されません。