Exploring GC implementations
The standard JVM has five implementations for GC. Other Java implementations can have other GC implementations, such as the garbage collectors from IBM and Azul. The way these work is relatively easy to grasp after understanding the following five implementations that come with the standard JVM:
- Serial GC
- Parallel GC
- CMS (concurrent mark sweep) GC
- G1 GC
- ZGC (Z garbage collector)
We will examine in detail how these implementations work a little later (however, we will not be discussing all the different command-line options for each of them). But, before we discuss how these specific garbage collectors work, another concept needs to be addressed: the concept of generational GC.
Generational GC
If you have a large Java application running, pausing the entire program in order to wait for the garbage collector to have marked every single live object would be a performance nightmare. Luckily, they thought of something cleverer...