|
This paper reports our experiences with a mostly-concurrent
incremental garbage collector, implemented in the context of a
high performance virtual machine for the Java[tm] programming
language. The garbage collector is based on the "mostly parallel"
collection algorithm of Boehm et al., and can be used as the old
generation of a generational memory system. It overloads
efficient write-barrier code already generated to support
generational garbage collection to also identify objects that were
modified during concurrent marking. These objects must be
rescanned to ensure that the concurrent marking phase marks all
live objects. This algorithm minimises maximum garbage collection
pause times, while having only a small impact on the average
garbage collection pause time and overall execution time. We
support our claims with experimental results, for both a synthetic
benchmark and real programs.
|