Evolving ZGC's Pointer Color Palette
summary
ZGC evolves from three persistent color bits plus one transient bit to a generational scheme using 12 transient bits, replacing multi‑map mappings with colorless roots to eliminate the threefold RSS inflation. Load and store barriers perform cheap color removal or recreation, using shifts and four‑instruction store fast paths; forwarding addresses live in an off‑heap table. Future work adds a persistent private/shared bit implemented via heap partitions, aiming for ~16 transient bits plus one persistent bit for thread‑local GC.
AI-written summary · about
chapters (18)
- 0:00Colored pointers in ZGC
- 1:5164-bit pointer anatomy
- 4:20Colored pointers and types
- 9:15Non-generational ZGC colors
- 13:09Instance reclamation in ZGC
- 16:43ZGC avoids compressed oops
- 18:28Finalizer colors in ZGC
- 19:32Generational ZGC challenges
- 21:19RSS inflation with colorless roots
- 22:25Generational ZGC’s 12 transient bits
- 26:18Transient vs persistent colors
- 27:45Barriers in generational ZGC
- 30:12Color bit manipulation in barriers
- 32:46Generational ZGC benefits
- 33:07Private versus shared objects
- 36:17NUMA-aware heap partitions
- 38:05ZGC pointer color evolution summary
- 38:52Q&A
related talks
34mGenerational ZGC and Beyond
46mZGC: A Scalable Low-Latency Garbage Collector
39mZGC - Paving the GC On-Ramp
19mZ Garbage Collector: The Next Generation
39mZGC: The Next Generation Low-Latency Garbage Collector
50mUnderstanding Low Latency JVM GCs
15mThree flavors of generational GC: G1, ZGC, Shenandoah
24mLiving on Channel ZGC
