Fast conservative garbage collection
Loading...
Date
Authors
Shahriyar, Rifat
Blackburn, Stephen
McKinley, Kathryn
Journal Title
Journal ISSN
Volume Title
Publisher
Association for Computing Machinery (ACM)
Abstract
Garbage collectors are exact or conservative. An exact collector
identifies all references precisely and may move referents
and update references, whereas a conservative collector
treats one or more of stack, register, and heap references
as ambiguous. Ambiguous references constrain collectors in
two ways. (1) Since they may be pointers, the collectors must
retain referents. (2) Since they may be values, the collectors
cannot modify them, pinning their referents.
We explore conservative collectors for managed languages,
with ambiguous stacks and registers. We show that
for Java benchmarks they retain and pin remarkably few
heap objects: <0.01% are falsely retained and 0.03% are
pinned. The larger effect is collector design. Prior conservative
collectors (1) use mark-sweep and unnecessarily forgo
moving all objects, or (2) use mostly copying and pin entire
pages. Compared to generational collection, overheads
are substantial: 12% and 45% respectively. We introduce
high performance conservative Immix and reference counting
(RC). Immix is a mark-region collector with fine linegrain
pinning and opportunistic copying of unambiguous
referents. Deferred RC simply needs an object map to deliver
the first conservative RC. We implement six exact collectors
and their conservative counterparts. Conservative Immix
and RC come within 2 to 3% of their exact counterparts.
In particular, conservative RC Immix is slightly faster than a
well-tuned exact generational collector. These findings show
that for managed languages, conservative collection is compatible
with high performance.
Description
Citation
Collections
Source
ACM SIGPLAN Notices