Shenandoah: The Garbage Collector That Could
summary
Shenandoah is a low‑pause OpenJDK collector that actually moves objects concurrent evacuation without long stop‑the‑world pauses by using concurrent mark, Brooks‑style forwarding pointers and read/write barriers; it adds about 8 bytes per object plus a ~1/64 heap mark bitmap, yields sub‑millisecond safepoints but costs throughput (benchmarks show roughly 1–20% overall overhead, typical writes ~3% and reads a single‑instruction cost), has two small pauses to drain SATB buffers, and is production‑usable in recent Red Hat/OpenJDK builds.
AI-written summary · about
chapters (34)
- 0:00Intro
- 1:44Overview. Landscape
- 3:50Overview: Heap Structure
- 4:24Overview: Cycle
- 8:30Concurrent Mark: Three-Color Abstraction Assign colors to the objects
- 9:56Concurrent Mark: Mutator Problems
- 14:25Concurrent Mark: Two Pauses
- 16:09Concurrent Mark: Observations
- 16:51Concurrent Copy: Stop The World
- 17:51Concurrent Copy: Mutator Problems
- 20:15Concurrent Copy: Brooks Pointers
- 21:42Write Barriers: Motivation
- 22:25Write Barriers: Slowpath
- 23:36Write Barriers: GC Evacuation Code
- 25:38Read Barriers: Motivation
- 26:06Read Barriers: Implementation
- 27:09Read Barriers: Observations
- 29:36CMP: Observations
- 30:42Overall: Observations
- 33:50Intermezzo: Testing
- 34:31Intermezzo: Pauses vs. LDS
- 36:58Intermezzo: Perf vs. LDS
- 37:45Advanced: Major Assumption
- 38:56Footprint: Internals
- 40:41Footprint: Microservice Example
- 43:53Immediates: Obvious Shortcut
- 44:56Partials: Heap Segregation
- 45:25Partials: Serial/Parallel/CMS
- 46:02Partials: G1
- 48:07Partials: Shenandoah
- 48:42Partials: Example
- 49:54Conclusion: In Single Picture
- 51:05Conclusion: Releases
- 53:34Conclusion: In Single Paragraph
related talks
01h 07mShenandoah – ultra-low Pause Time Garbage Collector #underthehood
49mConcurrent Garbage Collectors: ZGC & Shenandoah
48mShenandoah GC: The Next Generation
47mConcurrent Garbage Collectors: ZGC & Shenandoah
26mSecrets of the Shenandoah Garbage Collector
29mShenandoah 2 0: Now That We’ve Gotten the GC Pause Times Under Control, What’s Next?
01h 01mOpenJDK: In the new age of Concurrent Garbage Collectors
49mTrash Talk: Exploring the JVM memory management
