ZGC の変遷
JDK | JEP | 備考 |
---|---|---|
JDK 11 | JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental) | Linux/x64 向け |
JDK 13 | JEP 351: ZGC: Uncommit Unused Memory (Experimental) | 未使用ヒープをOSに返却 |
JDK 14 | JEP 364: ZGC on macOS (Experimental) | macOS 向け |
JDK 14 | JEP 365: ZGC on Windows (Experimental) | Windows 向け |
JDK 15 | JEP 377: ZGC: A Scalable Low-Latency Garbage Collector (Production) | 正式リリース |
JDK 21 | JEP 439: Generational ZGC | 世代別ZGC |
JDK 23 | JEP 474: ZGC: Generational Mode by Default | 世代別モードのデフォルト化 |
JDK 24 | JEP 490: ZGC: Remove the Non-Generational Mode | 非世代別モードの削除 |
JDK 9 以降の(サーバークラス)デフォルトは G1GC。
JDK 23 のデフォルトも G1GC(あくまでもZGCのデフォルトモードが世代別に変更になっただけ)。
ZGC オプション
設定 | 説明 |
---|---|
-XX:+UseZGC |
ZGCを有効化 |
-XX:+ZGenerational |
世代別モードを有効化(JDK23のデフォルト)(JDK 24で削除)。非世代別は -XX:-ZGenerational |
-Xmx |
最大ヒープ・サイズ |
-Xms |
最小ヒープ・サイズ |
-XX:SoftMaxHeapSize=<size> |
ZGCが目標にするヒープサイズ。ZGCはこの値を超えることもあるが、できるだけ早くSoftMaxHeapSize 以下になるようにOSにメモリを返却しようとする |
-XX:-ZUncommit |
未使用のメモリーをコミット解除し、OSに返却する機能を無効化する。-Xmx と-Xms が同値の場合、この機能は実質無効となる。-Xms 以下には返却されない |
-XX:ZUncommitDelay=<seconds> |
メモリーをコミット解除の遅延時間((デフォルト300秒) |
-XX:+AlwaysPreTouch |
起動中にヒープを準備する(起動が遅くなるが、平均待ち時間が短縮する) |
-XX:ConcGCThreads=<num> |
並行GCスレッド数(ZGCにより自動的にヒューリスティック選択されるため通常は設定不要) |