Affiliation:
1. Oracle, Stockholm, Sweden
2. Uppsala University, Uppsala, Sweden
Abstract
ZGC is a modern, non-generational, region-based, mostly concurrent, parallel, mark-evacuate collector recently added to OpenJDK. It aims at having GC pauses that do not grow as the heap size increases, offering low latency even with large heap sizes. The ZGC C++ source code is readily accessible in the OpenJDK repository, but reading it (25 KLOC) can be very intimidating, and one might easily get lost in low-level implementation details, obscuring the key concepts. To make the ZGC algorithm more approachable, this work provides a thorough description on a high-level, focusing on the overall design with moderate implementation details. To explain the concurrency aspects, we provide a SPIN model that allows studying races between mutators and GC threads, and how they are resolved in ZGC. Such a model is not only useful for learning the current design (offering a deterministic and interactive experience) but also beneficial for prototyping new ideas and extensions. Our hope is that our detailed description and the SPIN model will enable the use of ZGC as a building block for future GC research, and research ideas implemented on top of it could even be adopted in the industry more readily, bridging the gap between academia and industry in the context of GC research.
Funder
Swedish Foundation for Strategic Research
Publisher
Association for Computing Machinery (ACM)
Reference31 articles.
1. List processing in real time on a serial computer
2. Myths and realities
3. Roman Kennke and Christine H. Flood. 2014. JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental). Retrieved from http://openjdk.java.net/jeps/189.
4. Iris Clark Roman Kennke and Aleksey Shipilev. 2021. Shenandoah GC. Retrieved 16 may 2020 from https://wiki.openjdk.java.net/display/shenandoah.
Cited by
6 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Encore: Coda;Lecture Notes in Computer Science;2024
2. Partial Failure Resilient Memory Management System for (CXL-based) Distributed Shared Memory;Proceedings of the 29th Symposium on Operating Systems Principles;2023-10-23
3. Heap Size Adjustment with CPU Control;Proceedings of the 20th ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes;2023-10-19
4. Collecting Garbage on the Blockchain;Proceedings of the 15th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate Languages;2023-10-18
5. Concurrent GCs and Modern Java Workloads: A Cache Perspective;Proceedings of the 2023 ACM SIGPLAN International Symposium on Memory Management;2023-06-06