14.5 Application Serverで指定できるJava HotSpot VMのオプション
ここでは,add.jvm.argに指定できるJava HotSpot VMのオプション,およびオプションを指定する際の注意事項について説明します。
add.jvm.argに指定できるJava HotSpot VMのオプションについて次の表に示します。なお,「VR」とは,パラメタが導入・変更されたアプリケーションサーバのバージョンです。
オプション名 |
内容 |
指定可能値 |
VR |
---|---|---|---|
-D<property> |
JavaVMのシステムプロパティを指定します。 |
入力は制限されません。 |
05-00 |
-agentlib:<libname>[=<options>] |
ネイティブエージェントライブラリ<libname>をロードします。 |
入力は制限されません。 |
08-00 |
-verbose:<情報種別> |
<情報種別>に指定した情報を出力します。<情報種別>に指定できる値を示します。
|
指定できる文字列を次に示します。
|
05-00 |
-Xloggc:<ファイル> |
-verbose:gcと同様にGCイベントが発生するたびに報告しますが,そのデータを<ファイル>に記録します。-verbose:gcを指定したときに報告される情報のほかに,報告される各イベントの先頭に,最初のGCイベントからの経過時間(秒単位)が付け加えられます。 |
入力は制限されません。 |
05-00 |
-Xms<size> |
Javaヒープの初期サイズを設定します。 |
自然数の値を次に示す単位を使って指定します。
なお,大文字・小文字は区別されません。 |
05-00 |
-Xmx<size> |
Javaヒープの最大サイズを設定します。 |
自然数の値を次に示す単位を使って指定します。
なお,大文字・小文字は区別されません。 |
05-00 |
-Xmn<size> |
New領域の初期値および最大値を設定します。 |
自然数の値を次に示す単位を使って指定します。
なお,大文字・小文字は区別されません。 |
05-00 |
-Xss<size> |
1スタック領域の最大サイズを設定します。 |
自然数の値を次に示す単位を使って指定します。
なお,大文字・小文字は区別されません。 |
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領域の初期サイズを指定します。 |
自然数の値を次に示す単位を使って指定します。
なお,大文字・小文字は区別されません。 |
09-70 |
-XX:MaxMetaspaceSize=<size> |
Metaspace領域の最大サイズを指定します。 |
自然数の値を次に示す単位を使って指定します。
なお,大文字・小文字は区別されません。 |
09-70 |
-XX:CompressedClassSpaceSize |
Compressed Class Spaceの最大サイズを指定します。 |
自然数の値を次に示す単位を使って指定します。
なお,大文字・小文字は区別されません。 |
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※ |
|
指定できる文字を次に示します。
|
08-70 |
-XX:[+|-]UseG1GC |
-XX:+HitachiUseExplicitMemoryオプションとは同時に指定できません。指定した場合,メッセージが標準出力に出力され,JavaVMがリターンコード1で終了します。 |
指定できる文字を次に示します。
|
09-60 |
-XX:[+|-]UseZGC |
このオプションを-XX:+UseSerialGCまたは-XX:+UseG1GCと同時に指定した場合は,エラーメッセージを標準出力に出力して,コマンドの起動に失敗します。 |
指定できる文字を次に示します。
|
11-40 |
-XX:ParallelGCThreads=<threads>(G1GCの場合) |
G1GCのEvacuationを並列実行するスレッドの数を指定します。-XX:+UseG1GCを指定したときに有効になります。なお,このオプションは,デフォルト値で使用することを推奨します。変更する場合は,実際にJavaVMを動作させて測定した値を基に,最適な値を算出してから変更してください。 JavaVM起動時に,このオプションに指定した数のEvacuation処理用のスレッドが作成され,処理が実行されます。 このオプションの指定を省略した場合のデフォルト値は次のとおりです。
例えば,4CPUの場合は,「ParallelGCThreads=4」でデフォルト値は4になります。また,72CPUの場合は,「ParallelGCThreads=8+(72−8)×(5÷8)=48」で48になります。 このオプションに0を指定した場合は,デフォルト値が使用されます。 指定時には,次の点に注意してください。
|
自然数の値を指定します。 |
11-40 |
-XX:ParallelGCThreads=<threads>(ZGCの場合) |
ZGCサイクルのSTWフェーズでのGCスレッド数を指定します。このオプションと-XX:ConcGCThreadsオプションに指定した値のうち,大きい方の個数のスレッドが,JavaVMを起動したときに作成されます。 このオプションの指定を省略した場合,実行環境の論理CPU数の60%がデフォルト値として設定されます。ただし,小数点以下の値は切り上げられます。 なお,次の場合は,JavaVMを起動できません。
|
1〜1000の自然数の値を指定します。 |
11-40 |
-XX:ConcGCThreads=<threads>(G1GCの場合) |
G1GCのConcurrent Markingの処理を並列実行するスレッドの数を指定します。 -XX:+UseG1GCを指定したときに有効になります。なお,このオプションは,デフォルト値で使用することを推奨します。変更する場合は,実際にJavaVMを動作させて測定した値を基に,最適な値を算出してから変更してください。 JavaVM起動時に,このオプションに指定した数のConcurrent Marking処理用のスレッドが作成され,処理が実行されます。 このオプションの指定を省略した場合のデフォルト値は次のとおりです。
Max(A,B)はAとBのうち,大きい値を取ることを意味します。また,ParallelGCThreadsは-XX:ParallelGCThreadsの値を意味します。 このオプションに0を指定した場合はデフォルト値が使用されます。 指定時には次の点に注意して下さい。
|
自然数の値を指定します。 |
11-40 |
-XX:ConcGCThreads=<threads>(ZGCの場合) |
ZGCサイクルのM/R,RP,ECおよびREフェーズでのGCスレッド数の最大値を指定します。このオプションと-XX:ParallelGCThreadsオプションに指定した値のうち,大きい方の個数のスレッドが,JavaVMを起動したときに作成されます。 このオプションの指定を省略した場合,実行環境の論理CPU数の25%がデフォルト値として設定されます。ただし,小数点以下の値は切り上げられます。 なお,次の場合は,JavaVMを起動できません。
|
1〜1000の自然数の値を指定します。 |
11-40 |
-XX:MaxGCPauseMillis |
G1GCのGCによるアプリケーション停止時間の目標時間を[ms]の単位で指定できます。 -XX:+UseG1GCを指定したときに有効になります。 このオプションに0を指定した場合は,メッセージが標準出力に出力されJavaVMの起動に失敗します。 このオプションに100以下の値を指定する場合,ログファイルの非同期出力機能(-XX: +JavaLogAsynchronous)を使用することを推奨します。 |
自然数の値を指定します。 |
09-60 |
-XX:ReservedCodeCacheSize |
コードキャッシュ領域の最大サイズを指定します。 |
自然数の値を次に示す単位を使って指定します。
なお,大文字・小文字は区別されません。 |
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 |
ZGCを使用している場合に,GC発生要因「ZProactive」でのGCの発生を有効にするかどうかを指定します。アプリケーションが頻繁に実行されていないとき,または割り当てられるオブジェクトが少ないときに,前もってGCを発生させることで,Javaヒープ領域の空き容量を確保できます。 このオプションの指定を省略した場合,ONがデフォルト値として設定されます。 |
指定できる文字を次に示します。
|
11-40 |
-XX:[+|-]ZUncommit |
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(ダイレクトバッファの使用状況出力オプション)」を参照してください。 |
自然数の値を次に示す単位を使って指定します。
なお,大文字・小文字は区別されません。 |
11-40 |
-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サーバ
バッチサーバ
cjclstartapコマンドで起動するJavaアプリケーション
そのほかのJavaアプリケーション
なお,Java HotSpot VMのオプションを簡易構築定義ファイルに指定する場合は,「param-name指定値」にadd.jvm.argを指定した場合に指定できる「param-valueの指定内容」にJava HotSpot VMのオプションを指定してください。