QUICK START:PatternsErrors & FixesSecurityBenchmarksDevOps RecipesCheatsheetsInterviewCompareTopicsHTMLCSSJavaScriptTypeScriptPythonSQLReactNext.jsNode.jsLinux & UbuntuKotlinSwiftC# / .NETJavaGoRustC++DSASystem DesignDevOpsCybersecurityAI / ML
Runtimes & Languages

JVM Garbage Collector Shootout: ZGC vs Shenandoah vs G1

Analyze JVM Garbage Collector latency spikes by comparing ZGC, Shenandoah, and G1GC on heavy 64GB heap workloads.

Test Environment

CPUIntel Xeon Gold 6230
RAM128GB
OSRHEL 9
ToolSPECjbb2015

Metrics Comparison

Max Pause Time

Unit: ms
ZGC
0.8
Shenandoah
1.5
G1GC
150.0

Detailed Analysis

ZGC and Shenandoah practically eliminate stop-the-world pauses (<1ms), vastly outperforming G1 for latency-sensitive applications.

ZGC performs all expensive work (marking, relocation, remapping) concurrently with application threads using colored pointers.

Evacuation

Moving surviving objects

Bottleneck: G1 pauses application threads during evacuation.

Architectural Recommendations

  • Enable ZGC (-XX:+UseZGC) for web servers and trading systems
  • G1 is still good for batch processing

Frequently Asked Questions

What is the trade-off with ZGC?

Slightly lower overall throughput and higher CPU usage compared to G1.