Join us at DevNation and learn about Shenandoah.

You've tuned your Java application so that you can promise response times of 10ms and then a GC pause happens. You want to scale up your enterprise application but suddenly your GC pauses go from 50ms to 2 minutes. You need a garbage collector that works while your program is running so that you don't hit the GC wall.

Current GC technology works really well for managing pause times right up until the time that it doesn't. If your heaps are just too big for the GC to handle during your specified pause times you are going to end up falling back to a full GC and that can take minutes.  The problem has gotten so bad that users are resorting to off heap self managed storage to avoid GC thus negating one of the primary benefits of working in Java.

Shenandoah is a new GC algorithm developed at Red Hat to solve this problem.  We take small GC pauses to be able to accurately scan your thread stacks, but the bulk of the GC tracing and compaction happens concurrently while the Java threads are running.

This talk will describe the algorithm in detail, give some preliminary performance results, and answer any questions.

Last updated: April 25, 2022