Hitachi

Cosminexus V11 アプリケーションサーバ リファレンス 定義編(サーバ定義)


14.5 Application Serverで指定できるJava HotSpot VMのオプション

ここでは,add.jvm.argに指定できるJava HotSpot VMのオプション,およびオプションを指定する際の注意事項について説明します。

add.jvm.argに指定できるJava HotSpot VMのオプションについて次の表に示します。なお,「VR」とは,パラメタが導入・変更されたアプリケーションサーバのバージョンです。

表14‒11 add.jvm.argを指定した場合に指定できるJava HotSpot VMのオプション

オプション名

内容

指定可能値

VR

-D<property>

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

入力は制限されません。

05-00

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

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

入力は制限されません。

08-00

-verbose:<情報種別>

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

class:

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

gc:

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

jni:

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

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

  • class

  • gc

  • jni

05-00

-Xloggc:<ファイル>

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

入力は制限されません。

05-00

-Xms<size>

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

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

  • キロ「k」

  • メガ「m」

  • ギガ「g」

  • テラ「t」

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

05-00

-Xmx<size>

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

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

  • キロ「k」

  • メガ「m」

  • ギガ「g」

  • テラ「t」

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

05-00

-Xmn<size>

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

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

  • キロ「k」

  • メガ「m」

  • ギガ「g」

  • テラ「t」

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

05-00

-Xss<size>

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

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

  • キロ「k」

  • メガ「m」

  • ギガ「g」

  • テラ「t」

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

05-00

-Xprof

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

05-00

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

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

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

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

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

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

05-00

-Xrun<libraryName>

JVMPI,JVMDIなどのエージェントを含むライブラリと,起動時に渡されるオプションの文字列を指定します。

入力は制限されません。

05-00

-Xdebug

指定した場合,JVMDIのサポートを有効にして開始します。JVMDIは推奨されていません。また,J2SE 5.0でのデバッグには使用されません。したがって,J2SE 5.0でのデバッグには,このオプションは必要ありません。

05-00

-XX:NewRatio=<value>

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

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

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

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

05-00

-XX:MetaspaceSize=<size>

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

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

  • キロ「k」

  • メガ「m」

  • ギガ「g」

  • テラ「t」

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

09-70

-XX:MaxMetaspaceSize=<size>

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

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

  • キロ「k」

  • メガ「m」

  • ギガ「g」

  • テラ「t」

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

09-70

-XX:CompressedClassSpaceSize

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

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

  • キロ「k」

  • メガ「m」

  • ギガ「g」

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

09-70

-XX:SurvivorRatio=<value>

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

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

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

05-00

-XX:TargetSurvivorRatio=<value>

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

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

05-00

-XX:MaxTenuringThreshold=<value>

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

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

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

05-00

-Xrunhndlwrap

JDKのバージョンが5以下の環境でWindowsをログオフしたとき,JavaVMの実行を継続するかどうか設定します。

-XX:+EagerXrunInitを指定した場合,このオプションの指定は無効になります。また,-agentlib:hndlwrap2

を設定した場合,このオプションは設定しないでください。

このオプションは,ほかのJVMTI版プログラムと同時に使用できません。

コマンドプロンプト上でこのオプションを使用したJavaを実行している状態でログオフすると,「プログラムが反応しない」旨のエラーポップアップが表示され,ログオフできません。

05-01

-agentlib:hndlwrap2

JDKのバージョンが6の環境でWindowsをログオフしたとき,JavaVMの実行を継続するかどうか設定します。

-Xrunhndlwrapを設定した場合,このオプションは設定しないでください。

このオプションは,ほかのJVMTIプログラムと同時に使用できません。

コマンドプロンプト上でこのオプションを使用したJavaを実行している状態でログオフすると,「プログラムが反応しない」旨のエラーポップアップが表示され,ログオフできません。

08-50

-XX:[+|-]UseSerialGC

-XX:+UseSerialGC

SerialGCを実行します。

-XX:-UseSerialGC

SerialGCを実行しません。

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

  • プラス「+」

  • マイナス「-」

08-70

-XX:[+|-]UseG1GC

-XX:+UseG1GC

G1GCを実行します。

-XX:-UseG1GC

G1GCを実行しません。

-XX:+HitachiUseExplicitMemoryオプションとは同時に指定できません。指定した場合,メッセージが標準出力に出力され,JavaVMがリターンコード1で終了します。

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

  • プラス「+」

  • マイナス「-」

09-60

-XX:[+|-]UseZGC

-XX:+UseZGC

ZGCを実行します。

-XX:-UseZGC

ZGCを実行しません。

このオプションを-XX:+UseSerialGCまたは-XX:+UseG1GCと同時に指定した場合は,エラーメッセージを標準出力に出力して,コマンドの起動に失敗します。

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

  • プラス「+」

  • マイナス「-」

11-40

-XX:ParallelGCThreads=<threads>(G1GCの場合)

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を起動できません。

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

11-40

-XX:ParallelGCThreads=<threads>(ZGCの場合)

ZGCサイクルのSTWフェーズでのGCスレッド数を指定します。このオプションと-XX:ConcGCThreadsオプションに指定した値のうち,大きい方の個数のスレッドが,JavaVMを起動したときに作成されます。

このオプションの指定を省略した場合,実行環境の論理CPU数の60%がデフォルト値として設定されます。ただし,小数点以下の値は切り上げられます。

なお,次の場合は,JavaVMを起動できません。

  • 自然数以外の値を指定した場合

    標準エラー出力にメッセージを出力します。

  • -1以下または1001以上の数値を指定した場合

    標準出力および標準エラー出力にメッセージを出力します。

  • 0を指定した場合

    標準出力にメッセージを出力します。

  • 実行環境で作成できるスレッド数以上の値を指定した場合

    出力されるメッセージについては,マニュアル「アプリケーションサーバ 機能解説 保守/移行編」の「5.8 JavaVMが出力するメッセージログ(標準出力およびエラーリポートファイル)」を参照してください。

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

11-40

-XX:ConcGCThreads=<threads>(G1GCの場合)

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の起動に失敗します。

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

11-40

-XX:ConcGCThreads=<threads>(ZGCの場合)

ZGCサイクルのM/R,RP,ECおよびREフェーズでのGCスレッド数の最大値を指定します。このオプションと-XX:ParallelGCThreadsオプションに指定した値のうち,大きい方の個数のスレッドが,JavaVMを起動したときに作成されます。

このオプションの指定を省略した場合,実行環境の論理CPU数の25%がデフォルト値として設定されます。ただし,小数点以下の値は切り上げられます。

なお,次の場合は,JavaVMを起動できません。

  • 自然数以外の値を指定した場合

    標準エラー出力にメッセージを出力します。

  • -1以下または1001以上の数値を指定した場合

    標準出力および標準エラー出力にメッセージを出力します。

  • 0を指定した場合

    標準出力にメッセージを出力します。

  • 実行環境で作成できるスレッド数以上の値を指定した場合

    出力されるメッセージについては,マニュアル「アプリケーションサーバ 機能解説 保守/移行編」の「5.8 JavaVMが出力するメッセージログ(標準出力およびエラーリポートファイル)」を参照してください。

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

11-40

-XX:MaxGCPauseMillis

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

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

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

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

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

09-60

-XX:ReservedCodeCacheSize

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

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

  • キロ「k」

  • メガ「m」

  • ギガ「g」

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

09-50

-XX:ZAllocationSpikeTolerance=<factor>

ZGCを使用している場合に,最大割り当て率と空きメモリ量からOOMが発生するまでの時間を計算するときに,割り当て率に掛ける数値を指定します。<factor>の数値を掛けて割り当て率を大きく見積もることで,割り当て率が急に増えた場合でも,GCを実行してOOMを防ぐことができます。

このオプションの指定を省略した場合,1.0がデフォルト値として設定されます。

0以上の数値を指定します。

11-40

-XX:ZCollectionInterval=<seconds>

ZGCを使用している場合に,GC発生要因「ZTimer」のインターバルの秒数を指定します。

このオプションの指定を省略した場合,0がデフォルト値として設定されます。

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

11-40

-XX:ZFragmentationLimit=<percent>

ZGCを使用している場合に,ページを回収するかどうかの基準となる使用済みのオブジェクトの割合を指定します。ページにある使用済みのオブジェクトの割合が<percent>以上の場合,ZGCサイクルのECフェーズで,回収するページとして選択されます。

このオプションの指定を省略した場合,25がデフォルト値として設定されます。

0〜100の整数を指定します。

11-40

-XX:[+|-]ZProactive

-XX:+ZProactive

GC発生要因「ZProactive」によるGCが発生します。

-XX:-ZProactive

GC発生要因「ZProactive」によるGCが発生しません。

ZGCを使用している場合に,GC発生要因「ZProactive」でのGCの発生を有効にするかどうかを指定します。アプリケーションが頻繁に実行されていないとき,または割り当てられるオブジェクトが少ないときに,前もってGCを発生させることで,Javaヒープ領域の空き容量を確保できます。

このオプションの指定を省略した場合,ONがデフォルト値として設定されます。

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

  • プラス「+」

  • マイナス「-」

11-40

-XX:[+|-]ZUncommit

-XX:+ZUncommit

未使用メモリをOSに返します。

-XX:-ZUncommit

未使用メモリをOSに返しません。

ZGCを使用している場合に,未使用メモリをOSに返すかどうかを指定します。未使用メモリをOSに返すときは,ヒープサイズが最小ヒープサイズを下回らないように設定されています。

なお,-XX:[+|-]ZUncommitオプションを使用する場合は,-Xmsオプションの値よりも大きい値を,-Xmxオプションに指定してください。-Xmsオプションと-Xmxオプションに同じ値を指定すると,-XX:[+|-]ZUncommitオプションは無効になります。

このオプションの指定を省略した場合,ONがデフォルト値として設定されます。

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

  • プラス「+」

  • マイナス「-」

11-40

-XX:ZUncommitDelay=<seconds>

ZGCを使用している場合に,未使用メモリをOSに返す判断をする時間の長さを指定します。

なお,-XX:ZUncommitDelay=<seconds>オプションを使用する場合は,-Xmsオプションの値よりも大きい値を,-Xmxオプションに指定してください。-Xmsオプションと-Xmxオプションに同じ値を指定すると,-XX:ZUncommitDelay=<seconds>オプションは無効になります。

このオプションの指定を省略した場合,300がデフォルト値として設定されます。

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

11-40

-XX:MaxDirectMemorySize=<size>

ダイレクトバッファの最大サイズ(バイト単位)を設定します。

このオプションのデフォルト値は,Javaヒープ領域の最大値と同じ値です。そのため,ダイレクトバッファを大量に使用する場合は,このオプションの値を大きくしてください。

ダイレクトバッファの最大サイズを見積もるときは,日立JavaVMログファイルにあるダイレクトバッファ情報出力機能のログから,ダイレクトバッファの使用サイズを確認してください。なお,日立JavaVMログファイルにダイレクトバッファ情報を出力するためには,-XX:+HitachiVerboseGCPrintDirectBufferオプションを指定してください。詳細は,「14.2 JavaVM拡張オプションの詳細」の「-XX:[+|-]HitachiVerboseGCPrintDirectBuffer(ダイレクトバッファの使用状況出力オプション)」を参照してください。

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

  • キロ「k」

  • メガ「m」

  • ギガ「g」

  • テラ「t」

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

11-40

(凡例)

−:該当なし

注※

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

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

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

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

実行される処理

指定なし

指定なし

SerialGCを実行(JDK11以前の場合)

G1GCの実行(JDK17以降の場合(ただし,論理プロセッサが2未満または物理メモリが約1792メガバイト未満の場合は,SerialGCが実行されます))

-XX:+UseSerialGC

-XX:+UseG1GC

プロセスの起動に失敗

-XX:+UseSerialGC

-XX:-UseG1GC

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

-XX:-UseSerialGC

-XX:-UseG1GC

プロセスの起動に失敗(JDK11以前の場合)

G1GCの実行(JDK17以降の場合)

-XX:-UseSerialGC

-XX:+UseG1GC

G1GCを実行

注意事項
  • デバッグまたはプロファイリング用オプションについて

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

  • GCの指定について

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

ポイント

Java HotSpot VMのオプションのデフォルト値は,サーバごとに参照先が異なります。サーバ,およびアプリケーションごとのJava HotSpot VMのオプションのデフォルト値の参照先を次の表に示します。

表14‒13 サーバ,およびアプリケーションごとのJava HotSpot VMのオプションのデフォルト値の参照先

使用するサーバおよびアプリケーション

参照先

J2EEサーバ

2.2.2 usrconf.cfg(J2EEサーバ用オプション定義ファイル)

バッチサーバ

3.2.1 usrconf.cfg(バッチサーバ用オプション定義ファイル)

cjclstartapコマンドで起動するJavaアプリケーション

12.2.1 usrconf.cfg(Javaアプリケーション用オプション定義ファイル)

そのほかのJavaアプリケーション

14.4 Application Serverで指定できるJava HotSpot VMのオプションのデフォルト値

なお,Java HotSpot VMのオプションを簡易構築定義ファイルに指定する場合は,「param-name指定値」にadd.jvm.argを指定した場合に指定できる「param-valueの指定内容」にJava HotSpot VMのオプションを指定してください。