G1GC (Garbage First): GC mặc định từ Java 9.
Region-based, cân bằng throughput và latency.
Heap đến 20GB.
Pause ~100-200ms.
Phù hợp: hầu hết ứng dụng general purpose, web service, batch job vừa.
ZGC (Java 15+, production ready): low-latency extreme — pause <10ms ngay cả heap 100GB+.
Concurrent compaction, scalable.
Chi phí: CPU overhead cao hơn.
Phù hợp: real-time systems, trading, gaming, latency SLA nghiêm ngặt.
Shenandoah (RedHat, có trong OpenJDK 12+): concurrent compaction tương tự ZGC, pause predictable hơn G1, nhỏ hơn ZGC CPU footprint — không phải GraalVM-only, có sẵn trong standard OpenJDK.
Cách chọn:
- Latency < 10ms → ZGC.
- Large heap (>20GB) → ZGC hoặc Shenandoah.
- General purpose → G1GC (default)
Cấu hình: -XX:+UseZGC, -XX:+UseShenandoahGC.
Monitor: JFR (Java Flight Recorder) + GC logs để validate.