Page Contents

Are you wondering what the default Java Garbage Collection algorithm is? It depends on 3 factors:

  1. Who is your JVM Vendor (i.e., OpenJDK, OpenJ9, Azul …)?
  2. What version of Java are you running (i.e. Java 8, 11, 17…)?
  3. What class of JVM you are running (i.e. client or Server)?

Below table summarizes the default garbage collection algorithms for OpenJDK:

Java VersionDefault GC for Client-Class MachinesDefault GC for Server-Class Machines
Java 1.2 – 4Serial GCSerial GC
Java 5 (1.5)Serial GCParallel GC
Java 6Serial GCParallel GC
Java 7Serial GCParallel GC
Java 8Serial GCParallel GC
Java 9G1 GCG1 GC
Java 10G1 GCG1 GC
Java 11G1 GCG1 GC
Java 12G1 GCG1 GC
Java 13G1 GCG1 GC
Java 14G1 GCG1 GC
Java 15G1 GCG1 GC
Java 16G1 GCG1 GC
Java 17G1 GCG1 GC
Java 18G1 GCG1 GC
Java 19G1 GCG1 GC
Java 20G1 GCG1 GC
Java 21G1 GCG1 GC
Java 22G1 GCG1 GC

Besides the above-mentioned Serial GC, Parallel GC and G1 GC default algorithms, following algorithms are also available in OpenJDK: CMS GC, Shenandoah GC, ZGC, Epsilon GC. By following the tips given in this post, you can choose the right GC algorithm for your application.