ComputingComputer EngineeringComputer ScienceCompilersOperating SystemsParallel ComputingCachingGarbage CollectionMemory HierarchyMemory Hierarchy DesignMemory ManagementApplication Performance OptimizationBlock GrainCopying Garbage CollectionGarbage Collection AlgorithmsMark-sweep Garbage CollectionProgram Performance EvaluationReclamationTracing Garbage Collection
Programmers are increasingly choosing managed languages for modern applications, which tend to allocate many short-to-medium lived small objects. The garbage collector therefore directly determines program performance by making a classic space-time tradeoff that seeks to provide space efficiency, fast reclamation, and mutator performance. The three canonical tracing garbage collectors: semi-space, mark-sweep, and mark-compact each sacrifice one objective. This paper describes a collector family, called mark-region, and introduces opportunistic defragmentation, which mixes copying and marking in a single pass. Combining both, we implement immix, a novel high performance garbage collector that achieves all three performance objectives. The key insight is to allocate and reclaim memory in contiguous regions, at a coarse block grain when possible and otherwise in groups of finer grain lines. We show that immix outperforms existing canonical algorithms, improving total application performance by 7 to 25% on average across 20 benchmarks. As the mature space in a generational collector, immix matches or beats a highly tuned generational collector, e.g. it improves jbb2000 by 5%. These innovations and the identification of a new family of collectors open new opportunities for garbage collector design.
28
Stephen M. Blackburn, Robin Garner, Chris Hoffmann et al. · 2006 · 1.6K citations · Full text
List processing in real time on a serial computer
Henry G. Baker · Communications of the ACM · 1978 · 592 citations · Full text
Bowen Alpern, C. R. Attanasio, John Barton et al. · IBM Systems Journal · 2000 · 578 citations
A nonrecursive list compacting algorithm
C. J. Cheney · Communications of the ACM · 1970 · 392 citations · Full text