7.16 G1GCのチューニング

ここではG1GCのチューニング方法について記載します。チューニングはシステム構築時にし,システム要件を満たしていることを確認してから本番環境に適用してください。

Javaヒープ領域のサイズに関係するオプションの一覧を次の表に示します。なお,表の項番1~8は図の番号と対応しています。

表7-11 Javaヒープ領域内の各領域とMetaspace領域のサイズを指定するオプション

項番オプション名オプションの意味
1-Xms<size>Javaヒープの初期サイズを設定します。※1
2-Xmx<size>Javaヒープの最大サイズを設定します。※1
3-XX:NewSize=<value>New領域の最小サイズを設定します。※2
4-XX:MaxNewSize=<value>New領域の最大サイズを設定します。※2
5-XX:NewRatio=<value>Javaヒープ領域に対するNew領域の割合を設定します。※2
<value>が2の場合は,New領域とTenured領域の割合が,1:2になります。
6-XX:SurvivorRatio=<value>New領域に対するSurvivor領域で最大に取ることができる領域サイズの割合を設定します。
Survivor領域の最大で取ることができる領域サイズは次の式で求められます。
(Survivor領域のサイズ)※3=(New領域のサイズ)/SurvivorRatio
7-XX:MetaspaceSize=<size>Metaspace領域の初期サイズを設定します。※4
8-XX:MaxMetaspaceSize=<size>Metaspace領域の最大サイズを設定します。※4
注※1
-Xmsと-Xmxの値は同じ値を指定することを推奨します。
注※2
3~5のオプションを指定した場合,New領域のリサイズが制限され,目標停止時間内にGC停止時間を抑えようとするG1GCのメリットを損なうため,G1GCでは指定しないことを推奨します。また,3~5のオプションを指定しなかった場合,New領域の初期サイズはJavaヒープの初期サイズ×0.2のサイズが確保され,Eden領域の初期サイズはSurvivorRatioのデフォルト値である8に従って割り当てられます。
注※3
Survivor領域のサイズとはTo空間またはFrom空間のサイズを指します。To空間とFrom空間の合計サイズでないことに注意してください。
注※4
-XX:MetaspaceSizeと-XX:MaxMetaspaceSizeの値は同じ値を指定することを推奨します。

図7-32 Javaヒープ領域内の各領域とMetaspace領域のサイズとオプションの対象範囲

[図データ]

次にG1GCのチューニングに利用するオプションを次の表に示します。各オプションの詳細については,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「16.5 Application Serverで指定できるJava HotSpot VMのオプション」の各オプションの説明を参照してください。

表7-12 G1GCのチューニングオプション

項番オプション名デフォルト値オプションの意味
1-XX:MaxGCPauseMillis=<value>200目標停止時間[ms]
2-XX:ParallelGCThreads=<value>CPU数
(OSが認識しているCPU数)
Evacuationの処理をするスレッド数
3-XX:ConcGCThreads=<value>(ParallelGCThreads + 2) / 4CM処理をするスレッド数
注※
実行環境のCPU数によって計算式が異なります。
<この節の構成>
7.16.1 チューニングの流れ
7.16.2 初期検証
7.16.3 FullGCの発生を抑止するチューニング
7.16.4 最悪レスポンス時間を短くするチューニング
7.16.5 スループットを向上させるチューニング