7.13.2 -XX:HitachiThreadLimit
スレッド数の上限値を指定します。
説明
スレッド数の上限値を指定します。スレッド数の上限値が指定値を超えた場合に、OutOfMemoryError例外がスローされます。ただし、JavaVMが起動する前に上限値を超えた場合、例外はスローされません。また、スレッド数には、アプリケーションがJNIなどを使用してJavaVMの管理外の範囲で作成したスレッド数は含みません。0を指定した場合、上限値は設定されません。
なお、-XX:+HitachiOutOfMemoryAbortオプションと同時に指定した場合、このオプションの機能によってOutOfMemoryError例外がスローされた場合、JavaVMの強制終了は実行されません。
また、-XX:+HitachiOutOfMemoryStackTraceオプションと同時に指定した場合、例外メッセージがJavaVMログファイルに出力されます。
- 出力形式
-
Could not create "name" thread. Threadlimit Exceeded. num threads exist.
このメッセージは、java.lang.Throwable.getMessage()で取得できます。また、メッセージ全体が半角128文字以上になった場合は、メッセージの末尾が省略されます。
出力項目
出力内容
name
作成に失敗したスレッド名。
num
現時点でのスレッド数。
-XX:+HitachiOutOfMemoryStackTraceオプションが指定されている場合、JavaVMログファイルに例外情報とスタックトレースを出力できます。例外発生要因種別は、"Thread Limit"となります。例外発生要因種別を次に示します。
表7‒10 例外発生要因種別一覧 項番
要因メッセージ
説明
1
C Heap
Cヒープ確保時の例外
2
Java Heap
Javaヒープ確保時の例外
3
Meta Space
Metaspace確保時の例外
4
Compressed Class Space
Compressed Class Space確保時の例外
5
Unknown
上記例外を特定できない場合
6
Thread Limit
スレッド数の上限値設定機能(-XX:HitachiThreadLimitオプション)を指定した場合に、作成したスレッド数が指定した上限値を超えたときの例外
書式
-XX:HitachiThreadLimit=整数値
指定できる値
- 整数値
-
型:Integer
スレッド数の上限値を0〜2147483647の範囲で整数値(単位:スレッド数)を指定します。範囲外の値が指定された場合は0が設定されます。負の値を指定した場合はエラーとなります。
デフォルト値
- 定義項目の省略
-
-XX:HitachiThreadLimit=0
出力例
Could not create "Thread-1" thread. Threadlimit Exceeded. 9 threads exist.
この例は、mainスレッドによってjava.lang.Thread.startが呼び出され、この機能によって例外をスローした場合に、java.lang.Throwable.getMessage()でメッセージを取り出したメッセージの例です。
注意事項
上限値に小さな値を設定すると、起動前に例外をスローします。Java EEサーバが使用するスレッド数より小さな値を設定しないでください。