Beyond the Beltway
We present the design and implementation of a new garbage collection framework that significantly generalizes existing copying collectors and show how it can be used to support a new paradigm for garbage collection. The Beltway framework exploits and separates object age and incrementality. It groups objects in one or more increments on queues called belts, collects belts independently, and collects increments on a belt in first-in-first-out order. We show that Beltway configurations, selected by command line options, act and perform the same as semi-space, generational, and older-first collectors, and encompass all previous copying collectors of which we are aware. The increasing reliance on garbage collected languages such as Java requires that the collector perform well. We show that the generality of Beltway enables us to design and implement new collectors that are robust to variations in heap size and improve total execution time over the best generational copying collectors of which we are aware by up to 40%, and on average by 5 to 10%, for small to moderate heap sizes. New garbage collection algorithms are rare, and yet we define not just one, but a new family of collectors that subsumes previous work.
This generality enables us to explore a larger design space and build better collectors. In particular, we explore how we can take advantage of predictable program behaviour to build efficient collectors that will scale to the next generation of very large heaps.