7.18.2 チューニングの流れ
ZGCを使用している場合のチューニングでは,OutOfMemoryを抑制するためにJavaヒープ領域の最大サイズを設定します。Javaヒープ領域の最大サイズの設定以外の方法でOutOfMemoryを抑制する場合は,「7.18.3 GC停止時間およびスループットの改善方法」を参照してください。
(1) Javaヒープ領域の最大サイズの設定
Javaヒープ領域の最大サイズを設定する手順は次のとおりです。
-
SerialGCを有効にして,最大の負荷を掛けた状態でアプリケーションを実行します。
-
拡張verbosegc情報から,FullGC発生後のJavaヒープ領域のサイズを確認します。
FullGC発生後の拡張verbosegc情報の出力例を次に示します。下線部分がFullGC発生後のJavaヒープ領域のサイズです。
… [VGC]<Wed Dec 28 14:12:05 2022>[Full GC 31780K->30780K(32704K), 0.2070500secs][DefNew::Eden: 3440K->1602K(3456K)][DefNew::Survivor:58K->0K(64K)][Tenured: 28282K->29178K(29184K)][Metaspace:1269K->1269K(4096K)][cause:ObjAllocFail][User: 0.0156250 secs][Sys: 0.0312500 secs] …
-
FullGC発生後の拡張verbosegc情報を何度か収集します。
-
手順3.で収集したFullGC発生後のJavaヒープ領域のサイズのうち,最も大きな値を,アプリケーションの動作に必要なJavaヒープ領域の最小サイズとします。
-
Javaヒープ領域の最大サイズを設定します。
-Xmxオプションを設定します。GC実行中のオブジェクトを余裕を持って作成できるようにするため,Javaヒープ領域の最大サイズは,手順4.で確認した値の1.5倍〜2倍に設定することを推奨します。
なお,Javaヒープ領域の初期サイズ(-Xmsオプション)は,最大ヒープサイズと同じ値に設定することを推奨します。
(2) OutOfMemoryの発生調査
ZGCを有効にして,システムの検証を行います。OutOfMemoryが発生しているかどうかを確認し,結果に応じて次の作業を実施してください。
-
OutOfMemoryが発生している場合
-Xmsオプションの値を大きくしたあと,再度「(1) Javaヒープ領域の最大サイズの設定」の手順を実施します。
-
OutOfMemoryが発生していない場合
チューニングは完了です。停止時間をさらに短くしたい場合,またはスループットを改善したい場合は,「7.18.3 GC停止時間およびスループットの改善方法」を参照してください。