Adding generational support to Shenandoah GC

Day 1 /  / Track 2  /  EN / For practicing engineers

By replacing various stop-the-world phases of traditional OpenJDK garbage collectors with concurrent Shenandoah GC phases that allow multiple application threads to run concurrently with multiple GC threads, it is now possible to configure JVM deployments of common workloads to never experience GC pauses any longer than ten ms. However, configuring a JVM to run "pause free" with Shenandoah or other available concurrent GC algorithms such as ZGC typically requires a much larger heap than is required with more traditional GC approaches. Whereas traditional GC runs reliably with heap utilization of 75% or higher, configuring Shenandoah GC to not experience pauses longer than 10 ms often requires heap utilization no greater than 30%.

A group of Corretto JVM engineers at Amazon has been working for the past year on adding generational support to Shenandoah GC, with the expectation that generational Shenandoah GC will allow pause-free JVM configurations even with heap utilization of 65% and higher. This talk describes some of the workloads that have motivated the generational Shenandoah effort, provides an overview of the algorithms and heuristics that are being implemented and offers a summary overview of the work plan, including the most recent experimental results.

Download presentation


Kelvin Nilsen

Kelvin Nilsen is a Senior Software Development Engineer on the Amazon Corretto team. He is best known as the inventor of the original real-time Java specification and architect of the Perc real-time virtual machine which has been deployed in thousands of automation applications, many of which honor P100 compliance with 100 microsecond end-to-end response time constraints.

Invited Experts

Volker Simonis

Volker Simonis is a Principal Software Engineer in the Corretto team at Amazon Web Services. He works on Java Virtual Machines since 2004 and is an OpenJDK Member, Reviewer and Committer right from the start. Before joining Amazon he worked for SAP, Sun Microsystems and the University of Tübingen from where he holds a master and PhD degree in Computer Science. He represented SAP in the Executive Committee of the JCP and was a member of the JCP Expert Groups for Java SE 9 to 13. He's a passionate and frequent speaker at conferences around the globe and can easily be contacted at @volker_simonis.

Aleksey Shipilev
Red Hat

Aleksey is working on Java performance for 10+ years. Today he is employed by Red Hat, where he does OpenJDK development and performance work. Aleksey develops and maintains a number of OpenJDK subprojects, including JMH, JOL, and JCStress. He is also an active participant in expert groups and communities dealing with performance and concurrency. Prior joining Red Hat, Aleksey was working on Apache Harmony at Intel, then moved to Sun Microsystems, which was later consumed by Oracle.