Nâng CaoJava iconJava

So sánh G1GC, ZGC và Shenandoah: workload nào phù hợp với từng GC?

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:

  1. Latency < 10ms → ZGC.
  2. Large heap (>20GB) → ZGC hoặc Shenandoah.
  3. General purpose → G1GC (default)

Cấu hình: -XX:+UseZGC, -XX:+UseShenandoahGC.

Monitor: JFR (Java Flight Recorder) + GC logs để validate.

Xem toàn bộ Java cùng filter theo level & chủ đề con.

Mở danh sách Java