11 Zガベージ・コレクタ

Zガベージ・コレクタ(ZGC)はスケーラブルな低レイテンシのガベージ・コレクタです。ZGCは、アプリケーション・スレッドの実行の停止時間を10ミリ秒以下に抑えながら、負荷が高いすべての作業を同時に実行するため、低レイテンシが要求される、または非常に大きいヒープ(数テラバイト)を使用するアプリケーションに適しています。

Zガベージ・コレクタは実験的な機能として提供されており、有効化するにはコマンドライン・オプションの -XX:+UnlockExperimentalVMOptions -XX:+UseZGCを使用します。

ヒープ・サイズの設定

ZGCの最も重要なチューニング・オプションは最大ヒープ・サイズ(-Xmx)を設定することです。ZGCはコンカレント・コレクタであるため、最大ヒープ・サイズを選択するには、1) ヒープにアプリケーションのライブセットを格納できること、2) GCの実行中に割当てを提供できる十分なヘッドルームがヒープ内にあることを確認する必要があります。必要なヘッドルームの容量は、割当て率とアプリケーションのライブセットのサイズによって大きく異なります。通常、ZGCに割り当てるメモリーが多いほどよいとされています。ただし、その一方でメモリーの浪費は望ましくないため、メモリー使用量と必要なGCの実行頻度との間でバランスが取ることが重要です。

並行GCスレッド数の設定

2番目に重要なチューニング・オプションは、並行GCスレッド数(-XX:ConcGCThreads)を設定することです。ZGCには、この数を自動的に選択するためのヒューリスティックがあります。通常、このヒューリスティックは正常に機能しますが、アプリケーションの特性によっては調整が必要な場合があります。基本的に、このオプションではGCに割り当てるCPU時間を指定します。割り当てすぎると、GCによってアプリケーションのCPU時間が過度に奪われることになります。割当てが少なすぎると、GCの収集能力を上回る速度でアプリケーションがガベージを生成する可能性があります。