Automatic Memory Management Without Pauses

Automatic Memory Management Without Pauses

Robbert Haarman


Posted by inglorion
at 2012-11-29 07:09:35

I was reading about real-time automatic memory management, and came across some really interesting work done by the engineers at Azul. In 2005, they published the Pauseless GC Algorithm (PDF), with a partial (some pauses remain) implementation on their custom hardware. If I read the paper correctly, they achieved a maximum pause time of about 40ms and a minimum mutator utilization (percentage of time the program spends not doing memory management) that gets better the longer the time interval you look at (at 1000ms, the minimum mutator utilization is 77%).

The results they published in 2005 are already very impressive, but it gets better. In 2009, they mentioned that their "MMU past 20msec is 0.99", meaning that they must have reduced the maximum pause time to below 20ms, and your program is guaranteed to spend at most 1% of its time doing memory management when you look at time intervals longer than that.

It doesn't stop there. In 2011, they published a paper called C4: The Continuously Concurrent Compacting Collector (paper is available for download after free registration), where they describe the C4 collector, which runs on commodity x86 hardware and achieves "JVM measurable jitter" in the "low 10's of msec", which is "no longer strongly affected by garbage collection, with scheduling and thread contention artifacts dominating".

Hats off. I think they have won.