Shenandoah GC Guide
Red Hat's concurrent low-latency GC — available on Red Hat OpenJDK builds
including ubi9/openjdk-21-runtime and ubi9/openjdk-25-runtime images.
If you're on OpenShift using UBI9: Shenandoah is available in Red Hat OpenJDK
builds (1-20ms pauses) — opt in with
-XX:+UseShenandoahGC. Demos 02 and 06 explicitly override it with
-XX:+UseG1GC and -XX:+UseZGC for a clean comparison.
Sections
What Is Shenandoah?
GC Defaults by Container Image
How Shenandoah Works
Shenandoah vs G1GC vs ZGC
When Each GC Wins
The Barrier Type Distinction
Configuration Reference
Monitoring Shenandoah
DegeneratedGC — What It Means
The On-Stage Framing
Reference Links
Choose Shenandoah when...
- Deploying on OpenShift / UBI9 — available in Red Hat builds
- p99 SLA between 20ms and 100ms
- Medium to large heaps (4GB-100GB)
- JDK 8+ support needed (Red Hat builds)
Choose ZGC when...
- p99 SLA tighter than 10ms
- Heap exceeds 32GB
- HPA stability is critical (flat CPU profile)
- JDK 21+ available
File location in repo
spring-boot-demos/SHENANDOAH-GC-GUIDE.md