That’s a mouthful
Red Hat lifts lid on high-performance garbage collector
Red Hat researchers have officially submitted their new garbage collector for inclusion in the OpenJDK.
Not quite a pauseless garbage collector, Shenandoah is being touted as having “ultra-low-pause-time”, and is optimised to run well with exceptionally large memory heaps. According to their JDK Enhancement Proposal (JEP), the creators aim to produce a GC that can provide sub-10ms pause times with heaps larger than 100GB.
Shenandoah (a Native American word meaning deer, and the name of many places across the US, in case you were wondering) achieves this by doing evacuation work concurrently with Java threads and making pause times independent of heap size.
An obvious comparison is the garbage collector in Zing, the proprietary JVM by Azul systems. While Red Hat’s version is not truly pauseless like Zing’s GC, it will be fully open source and (if approved) integrated into the OpenJDK.
The project is the work of Christine Flood and Roman Kennke, software engineers at Red Hat. Kennke has blogged and spoken publicly about it previously, but this is the first real step towards making Shenandoah publicly available.
While the 100GB heap figure may be impressive, an earlier blog post from Kennke suggests that the pair were initially even more ambitious, hoping to support terabyte-sized heaps. He did however finish the same blog post with a disclaimer that there were “a lot of hairy issues to resolve”.
The current aim, according this week’s proposal, is “a performance penalty of no more than 10% over the current collectors on applications with no GC pauses and no perceivable performance penalty when running any of the current collectors.” Additional technical details can be found in Kennke’s series of blog posts.
The authors also warn that Shenandoah is “not the one GC to rule them all”, and that for those with heaps smaller than 20GB or running with fewer than eight cores, it may not be of much use.
Photo by Anathea Utley.