7.20 ZGC使用時の注意事項(JDK17以降の場合)
ここでは,ZGCを使用する場合の注意事項について説明します。
-
外部から観測できるメモリ使用量
ZGCでは,複数の異なる範囲の仮想アドレス空間を1つの物理アドレス空間に割り当てているため,OSが提供するツールでメモリ使用量を確認したとき,実際の使用量よりも値が大きくなることがあります。
例えば,Windowsで取得できるワーキングセット,Linuxで使用できるtopコマンド,およびpsコマンドで取得できるRES,RSSでは,複数の仮想アドレス空間がカウントされるため,実際の約3倍のメモリ使用量が表示されることがあります。
-
ユーザダンプおよびコアダンプのサイズ
ZGCでは,複数の異なる範囲の仮想アドレス空間を1つの物理アドレス空間に割り当てているため,ほかのGCを使用する場合よりも,ユーザダンプおよびコアダンプのサイズが大きくなります。
JavaVMがプロセスダウンした場合に生成されるユーザダンプおよびコアダンプのサイズは,使用する仮想アドレス空間の使用量(物理アドレス空間が割り当てられている量)と同じのため,ユーザダンプおよびコアダンプのサイズは,Javaヒープ領域の最大サイズの約3倍になります。
-
必要な仮想アドレス空間のサイズ
ZGCを使用している場合,ほかのGCを使用している場合よりも多くの仮想アドレス空間が必要です。これは,複数の仮想アドレス空間を同一の物理メモリにマッピングするというZGCの仕組みによるものです。物理メモリの実際の使用サイズには影響しません。ZGCを使用している場合に必要な仮想アドレス空間のサイズは次のとおりです。
-
Javaヒープ領域の最大サイズが4テラバイト未満の場合
必要な仮想アドレス空間のサイズは,次の計算式で算出した値です。ただし,最大値は12テラバイトです。
ZGC使用時に必要な仮想アドレス空間 = Javaヒープ領域の最大サイズ × 48
-
Javaヒープ領域の最大サイズが4テラバイト以上,8テラバイト未満の場合
必要な仮想アドレス空間のサイズは,24テラバイトです。
-
Javaヒープ領域の最大サイズが8テラバイト以上,16テラバイト以下の場合
必要な仮想アドレス空間のサイズは,48テラバイトです。
-