253. Introducing ZGC
Z Garbage Collector (ZGC) was introduced for the first time (as an experimental feature) in JDK 11. It was promoted to the production stage (production ready) in JDK 15 under JEP 377. It continues to be improved as we speak – in JDK 21, ZGC sustains application performance by maintaining separate generations for young and old objects. Basically, this minimizes allocation stalls and heap memory overhead. Moreover, JDK 21 (JEP 439) has promoted ZGC’s status from Targeted to Completed.
ZGC is concurrent (works at the same time as the application based on low-level concurrency primitives such as load barriers and colored pointers), tracing (traversing the object graph to identify live and non-live objects), and compacting (fight against fragmentation). It is also NUMA-aware and region-based.
ZGC was specially designed as a low-latency, highly scalable GC capable of handling from small (a few megabytes; the documentation states 8 MB) to massive...