Hitachi

uCosminexus Application Runtime - Cosminexus Developer's Kit for Java 機能解説・リファレンス


5.4 日立JavaVMで指定できるJava HotSpot VMのオプション

日立JavaVMの利用時に指定できるJava HotSpot VMのオプション,およびオプションを指定する際の注意事項について説明します。

指定できるJava HotSpot VMのオプションを次の表に示します。

各オプションのデフォルト値は,マニュアル「uCosminexus Application Runtime ユーザーズガイド」を参照してください。

表5‒9 指定できるJava HotSpot VMのオプション

オプション名

内容

指定可能値

-D<property>

JavaVMのシステムプロパティを指定します。

入力は制限されません。

-agentlib:<libname>[=<options>]

ネイティブエージェントライブラリ<libname>をロードします。

入力は制限されません。

-verbose:<情報種別>

<情報種別>に指定した情報を出力します。<情報種別>に指定できる値を示します。

class:

クラスがロードされるたびにクラスに関する情報を出力します。

gc:

GCイベントが発生するたびに報告します。

jni:

ネイティブメソッドの使用およびそのほかのJava Native Interface(JNI)アクティビティに関する情報を報告します。

指定できる文字列を次に示します。

  • class

  • gc

  • jni

-Xloggc:<ファイル>

-verbose:gcと同様にGCイベントが発生するたびに報告しますが,そのデータを<ファイル>に記録します。-verbose:gcを指定したときに報告される情報のほかに,報告される各イベントの先頭に,最初のGCイベントからの経過時間(秒単位)が付け加えられます。

入力は制限されません。

-Xms<size>

Javaヒープの初期サイズを設定します。

自然数の値を次に示す単位を使って指定します。

  • キロ「k」

  • メガ「m」

  • ギガ「g」

  • テラ「t」

なお,大文字・小文字は区別されません。

-Xmx<size>

Javaヒープの最大サイズを設定します。

自然数の値を次に示す単位を使って指定します。

  • キロ「k」

  • メガ「m」

  • ギガ「g」

  • テラ「t」

なお,大文字・小文字は区別されません。

-Xmn<size>

New領域の初期値および最大値を設定します。

自然数の値を次に示す単位を使って指定します。

  • キロ「k」

  • メガ「m」

  • ギガ「g」

  • テラ「t」

なお,大文字・小文字は区別されません。

-Xss<size>

1スタック領域の最大サイズを設定します。

自然数の値を次に示す単位を使って指定します。

  • キロ「k」

  • メガ「m」

  • ギガ「g」

  • テラ「t」

なお,大文字・小文字は区別されません。

-Xprof

このオプションを指定した場合,実行中のプログラムのプロファイルを生成し,プロファイリングデータを標準出力に出力します。このオプションは,プログラム開発用のユーティリティとして提供されています。本番稼働システムでの使用を目的としたものではありません。

-Xrunhprof[:<suboption>=<value>,...]

CPU,ヒープ,またはモニタのプロファイリングを有効にします。-Xrunhprofの後ろにコロン「:」を指定して「<suboption>=<value>」を記述します。「<suboption>=<value>」はコンマ「,」で区切って複数指定できます。

サブオプションとそのデフォルト値のリストを取得するには,コマンドjava-Xrunhprof:helpを実行します。

任意の文字列を指定します。

<suboption>には「=」および「,」は指定できません。

また,<value>には「,」は指定できません。

-XX:NewRatio=<value>

New領域に対するTenured領域の割合を指定します。

<value>が2の場合は,New領域とTenured領域の割合が,1:2になります。

「New領域の使用中サイズ≧Tenured領域の空き領域サイズ」になるとFullGCが発生します。このオプションに1を設定すると,FullGCが多発するので注意してください。

自然数の値を指定します。

-XX:MetaspaceSize=<size>

Metaspace領域の初期サイズを指定します。

自然数の値を次に示す単位を使って指定します。

  • キロ「k」

  • メガ「m」

  • ギガ「g」

  • テラ「t」

なお,大文字・小文字は区別されません。

-XX:MaxMetaspaceSize=<size>

Metaspace領域の最大サイズを指定します。

自然数の値を次に示す単位を使って指定します。

  • キロ「k」

  • メガ「m」

  • ギガ「g」

  • テラ「t」

なお,大文字・小文字は区別されません。

-XX:CompressedClassSpaceSize

Compressed Class Spaceの最大サイズを指定します。

自然数の値を次に示す単位を使って指定します。

  • キロ「k」

  • メガ「m」

  • ギガ「g」

なお,大文字・小文字は区別されません。

-XX:SurvivorRatio=<value>

New::Survivor領域のFrom空間とTo空間に対するNew::Eden領域の割合を指定します。

<value>に8を設定した場合は,New::Eden領域,From空間,To空間の割合が,8:1:1になります。

自然数の値を指定します。

-XX:TargetSurvivorRatio=<value>

GC実行後のNew::Survivor領域内でJavaオブジェクトが占める割合の目標値(0〜100(単位:%))を指定します。

自然数の値を指定します。

-XX:MaxTenuringThreshold=<value>

CopyGC実行時に,From空間とTo空間でJavaオブジェクトを入れ替える回数のしきい値を指定します。指定した回数を超えて入れ替え対象になったJavaオブジェクトは,Tenured領域に移動されます。

このオプションの有効範囲は,0〜デフォルト値です。範囲外の値を指定した場合,しきい値を超えた場合にTenured領域へ移動する機能は無効になります。

自然数の値を指定します。

-XX:[+|-]UseSerialGC

-XX:+UseSerialGC

SerialGCを実行します。

-XX:-UseSerialGC

SerialGCを実行しません。

指定できる文字を次に示します。

  • プラス「+」

    マイナス「-」

-XX:[+|-]UseG1GC

-XX:+UseG1GC

G1GCを実行します。

-XX:-UseG1GC

G1GCを実行しません。

指定できる文字を次に示します。

  • プラス「+」

    マイナス「-」

-XX:ParallelGCThreads

G1GCのEvacuationを並列実行するスレッドの数を指定します。-XX:+UseG1GCを指定したときに有効になります。なお,このオプションは,デフォルト値で使用することを推奨します。変更する場合は,実際にJavaVMを動作させて測定した値を基に,最適な値を算出してから変更してください。

JavaVM起動時に,このオプションに指定した数のEvacuation処理用のスレッドが作成され,処理が実行されます。

このオプションの指定を省略した場合のデフォルト値は次のとおりです。

  • 実行環境の論理CPU数が8以下の場合は,CPU数になります。

  • 実行環境の論理CPU数が9以上の場合は,「8+(CPU数−8)×(5÷8)」(小数点以下は切り捨て)の値になります。

例えば,4CPUの場合は,「ParallelGCThreads=4」でデフォルト値は4になります。また,72CPUの場合は,「ParallelGCThreads=8+(72−8)×(5÷8)=48」で48になります。

このオプションに0を指定した場合は,デフォルト値が使用されます。

指定時には,次の点に注意してください。

  • このオプションの値を大きくすると,Evacuation用のスレッド数が増え,Evacuationに割り当てられるリソースが増加します。そのため,値を大きくするとスループットが低下する可能性があります。このオプションの値を変更した場合,性能の要件を満たしているか確認をしてください。

    実行環境で作成できるスレッド数を超える値を指定した場合は,JavaVM起動時にEvacuation処理用のスレッドの作成に失敗するため,JavaVMを起動できません。

自然数の値を指定します。

-XX:ConcGCThreads

G1GCのConcurrent Markingの処理を並列実行するスレッドの数を指定します。

-XX:+UseG1GCを指定したときに有効になります。なお,このオプションは,デフォルト値で使用することを推奨します。変更する場合は,実際にJavaVMを動作させて測定した値を基に,最適な値を算出してから変更してください。

JavaVM起動時に,このオプションに指定した数のConcurrent Marking処理用のスレッドが作成され,処理が実行されます。

このオプションの指定を省略した場合のデフォルト値は次のとおりです。

  • Max( (ParallelGCThreads + 2)/4 , 1)

Max(A,B)はAとBのうち,大きい値を取ることを意味します。また,ParallelGCThreadsは-XX:ParallelGCThreadsの値を意味します。

このオプションに0を指定した場合はデフォルト値が使用されます。

指定時には次の点に注意してください。

  • 実行環境で作成できるスレッド数を超える値を指定した場合は,JavaVM起動時にConcurrent Marking処理用のスレッドの作成に失敗するため,JavaVMを起動できません。

    Concurrent Marking処理用スレッドのスレッド数はEvacuation処理用のスレッド数を超えて作成することはできません。Evacuation処理用のスレッド数を超えて指定した場合,メッセージが標準出力に出力されJavaVMの起動に失敗します。

自然数の値を指定します。

-XX:MaxGCPauseMillis

G1GCのGCによるアプリケーション停止時間の目標時間を[ms]の単位で指定できます。

-XX:+UseG1GCを指定したときに有効になります。

このオプションに0を指定した場合は,メッセージが標準出力に出力されJavaVMの起動に失敗します。

  • このオプションに100以下の値を指定する場合,ログファイルの非同期出力機能(-XX: +JavaLogAsynchronous)を使用することを推奨します。

自然数の値を指定します。

-XX:ReservedCodeCacheSize

コードキャッシュ領域の最大サイズを指定します。

自然数の値を次に示す単位を使って指定します。

  • キロ「k」

  • メガ「m」

  • ギガ「g」

なお,大文字・小文字は区別されません。

(凡例)

−:該当なし

注※

-XX:[+|-]UseSerialGCオプションと-XX:[+|-]UseG1GCオプションの指定の組み合わせごとに実行される処理を次に示します。

表5‒10 -XX:[+|-]UseSerialGCオプションと-XX:[+|-]UseG1GCオプションの指定の組み合わせごとの処理

-XX:[+|-]UseSerialGCオプションの指定

-XX:[+|-]UseG1GCオプションの指定

実行される処理

指定なし

指定なし

SerialGCを実行

-XX:+UseSerialGC

-XX:+UseG1GC

プロセスの起動に失敗

-XX:+UseSerialGC

-XX:-UseG1GC

SerialGCを実行(デフォルトと同様)

-XX:-UseSerialGC

-XX:-UseG1GC

-XX:-UseSerialGC

-XX:+UseG1GC

G1GCを実行

重要
  • デバッグまたはプロファイリング用オプションについて

    JavaVMオプションの-Xprofや-Xdebug,JVMTIエージェントのhprofやjdwp(-agentlib:<libname>などで指定)は,プログラムの開発用ユーティリティとして提供されているものです。システムの運用では指定しないようにしてください。

  • GCの指定について

    アプリケーションサーバのGCは,SerialGC(UseSerialGC)とG1GC(UseG1GC)を選択できます。この2つのGCを同時に指定しないようにしてください。同時に指定した場合は,Javaプロセスが起動できません。