Shenandoah GC 2.0
The major problem for large Java applications is G… (wait for it…) C pauses. Large heaps storing lots of live data, the failure to adhere to generational hypothesis, fragmentation due to old objects coming and going, exacerbate the issues even more. OpenJDK GCs managed to solve the first large part of the puzzle, concurrent marking — the ability to estimate the object reachability graph without stopping the application for a long time. Shenandoah is a new low-pause collector that tries to solve the second large part of the puzzle — the ability to move the objects without stopping the application, cutting the GC pauses even more. This talk is a basic introduction in Shenandoah’s design choices, important internal details, performance benefits and trade-offs.
Shenandoah has undergone substantial changes since the orginal paper by Christine Flood. Specifically we have a new barrier scheme, and have eliminated the extra forwarding pointer word per object, thus substantially reducing memory footprint. This talk will also look at those recent changes in Shenandoah and what’s in it for you.
Bio: Roman Kennke is Prinipal Software Engineer at Red Hat, where he worked and works on OpenJDK and several related projects, including Thermostat, the Zero and Shark ports of OpenJDK, and currently on the Shenandoah GC. In past lifes, he worked at aicas (realtime Java VM), Sun Microsystems (Webstart, Swing) and JP Morgan.