7.12.1 -XX:HitachiJITCompileMaxMemorySize
JITコンパイル時に確保するCヒープのメモリーサイズの上限値を指定します。
説明
JITコンパイル時に確保するCヒープのメモリーサイズの上限値を指定します。JITコンパイルによって確保するCヒープのメモリーが指定値を超えた場合、JavaVMログファイルにログを出力するとともに、以降のJITコンパイルを抑制します。JITコンパイル処理の対象となっていたJavaメソッドは、以降、インタープリターでだけ実行されるようになります。なお、JITコンパイルが抑制された場合でも、JavaVMは強制終了しないで、処理を続行します。
0を指定した場合、JITコンパイル時に確保するメモリーは上限値で制限されません。
なお、JITコンパイルはJavaVMの内部スレッド(JITコンパイラースレッド)で実行されます。JITコンパイラースレッドは2つあるため、このオプションで指定した上限値を2で割った値が、1つのJITコンパイラースレッドに対する上限値となります。
また、このオプションで上限値を設定した場合も、実際に使用できるCヒープがそれよりも少ないときには、上限値に達する前にCヒープ不足が発生することがあります。この場合、JavaVMは強制終了します。
- 前提オプション
-
-
-server
-
- 出力形式
-
[id][Thread: thread_id]<date>["thread_name" exceeded max memory size.] [current_sizeK->new_sizeK/limit_size_per_threadK/limit_sizeK] [compile_target][byte_code_size]
出力内容を次に説明します。
出力項目
出力内容
id
JMS(JavaVMログファイル識別子)。
thread_id
JITコンパイルを抑制したJITコンパイラースレッドのスレッドID。
date
JITコンパイルを抑制した日時。
-XX:+HitachiOutputMilliTimeオプションが指定された場合、ミリ秒単位で出力されます。
thread_name
JITコンパイルを抑制したJITコンパイラースレッドのスレッド名。
current_size
JITコンパイルを抑制したJITコンパイラースレッドの、現在のメモリー確保サイズ(単位:キロバイト)。
new_size
JITコンパイルを抑制したJITコンパイラースレッドの、現在のメモリー確保サイズと追加で確保しようとしたサイズの合計値(単位:キロバイト)。
limit_size_per_thread
1つのJITコンパイラースレッドの上限値(単位:キロバイト)。
limit_size
JITコンパイラースレッド全体の上限値(単位:キロバイト)。
compile_target
JITコンパイル処理の対象となっていたJavaメソッド。
byte_code_size
JITコンパイル処理の対象となっていたJavaメソッドのバイトコードのサイズ(単位:バイト)。
書式
-XX:HitachiJITCompileMaxMemorySize=整数値
指定できる値
- 整数値
-
型:Integer
JITコンパイル時に確保するメモリーの上限値を指定します。単位はバイトです。単位文字として、「k」(キロ)、「m」(メガ)、「g」(ギガ)も指定できます。指定できる範囲は次のとおりです。範囲外の値を指定した場合は、0が指定されます。
- 32ビット版のJavaVMの場合
-
0〜232-1(4294967295)
- 64ビット版のJavaVMの場合
-
0〜264-1(18446744073709551615)
0を指定した場合は、JITコンパイル時に確保するメモリーは上限値で制限されません。JITコンパイル中にCヒープ不足が発生した場合、JavaVMは強制終了します。
デフォルト値
- 定義項目の省略
-
-XX:HitachiJITCompileMaxMemorySize=0
出力例
オプションとして「-XX:HitachiJITCompileMaxMemorySize=536870912」を指定して、1つのJITコンパイラースレッドに対して262145キロバイトのCヒープを確保した場合に、上限値に達したときの出力例を示します。
[JMS][Thread: 0x03bf1150]<Wed Feb 24 14:33:58 2010> ["CompilerThread0" exceeded max memory size.][262143K->262145K/262144K/524288K] [test1.func][213]
注意事項
-
JITコンパイル時に確保するメモリーが、このオプションで指定した上限値を超えて、JITコンパイルが抑制されると、アプリケーションのスループットが低下します。
-
自然数以外の値が指定された場合は、定義していないオプションを指定した場合と同様の動作になります。