G1 became the default from Java 8, and it’s still the default in most versions. Open JDK introduced the Shenandoah algorithm in their version 8. Shenandoah further divides the heap, and compacts aggressively. It works mainly in parallel. This allows larger heaps and reduces pauses. https://medium.com/@jill.thornhill/garbage-collection-in-different-java-versions-evolution-and-improvements-f7ca062d309c