Chapter 7. Advanced Garbage Collection
In the last chapter we introduced the basic theory of Java garbage collection. From that starting point, we will move forward to introduce the theory of modern Java garbage collectors. This is an area that has unavoidable tradeoffs that guide the engineerâs choice of collector.
To begin with weâll introduce and delve into the other collectors the HotSpot JVM provides. These include the ultra low-pause, mostly concurrent collector (CMS) and the modern general-purpose collector (G1).
We will also consider some more rarely seen collectors. These are:
-
Shenandoah
-
C4
-
Balanced
-
Legacy HotSpot collectors
Not all of these collectors are used in the HotSpot virtual machineâwe will also be discussing the collectors of two other virtual machines: IBM J9 (a formerly closed source JVM that IBM is in the process of opening) and Azul Zing (a proprietary JVM). We have previously introduced both of these VMs in âMeet the JVMsâ.
Tradeoffs and Pluggable Collectors
One aspect of the Java platform that beginners donât always immediately recognize is that while Java has a garbage collector, the language and VM specifications do not say how GC should be implemented. In fact, there have been Java implementations (e.g., Lego Mindstorms) that didnât implement any kind of GC at all!1
Within the Sun (now Oracle) environment, the GC subsystem is treated as a pluggable subsystem. This means that the same Java program can execute with different garbage ...
Get Optimizing Java now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.