Comparing Mostly-Copying and Mark-Sweep Conservative Collection

Abstract

Many high-level language compilers generate C code and then invoke a C compiler for code generation, register allocation, stack management, and low-level optimization. To date, most of these compilers link the resulting code against a conservative mark-sweep garbage collector in order to reclaim unused memory. We introduce a new collector, MCC, based on an extension of mostly-copying collection.

We analyze the various design decisions made in MCC and provide a performance comparison to the most widely used conservative mark-sweep collector (the Boehm-Demers-Weiser collector). Our results show that a good mostly-copying collector can outperform a mature highly-optimized mark-sweep collector when physical memory is large relative to the live data. A surprising result of our analysis is that cache behavior has a greater impact on overall performance than either collector time, or allocation code.

(pdf, ps.gz)