A Fully Concurrent Garbage Collector for Functional Programs on Multicore Processors
This paper presents a concurrent garbage collection method
for functional programs running on a multicore processor.
It is a concurrent extension of our bitmap-marking non-moving
collector with Yuasa's snapshot-at-the-beginning strategy.
Our collector is unobtrusive in the sense of
the Doligez-Leroy-Gonthier collector;
the collector does not stop any mutator thread nor does it
force them to synchronize globally.
The only critical sections between a mutator and the collector are
the code to enqueue/dequeue a 32 kB allocation segment to/from a global
segment list and the write barrier code to push an object pointer onto
the collector's stack.
Most of these data structures can be implemented in standard
lock-free data structures.
This achieves both efficient allocation and unobtrusive collection
in a multicore system.
The proposed method has been implemented in SML#, a
full-scale Standard ML compiler supporting multiple native threads on
Our benchmark tests show a drastically short pause time
with reasonably low overhead compared to the sequential bitmap-marking
Wed 21 Sep
|13:30 - 13:55|
Ram RaghunathanCarnegie Mellon University, USA, Stefan MullerCarnegie Mellon University, USA, Umut AcarCarnegie Mellon University, Guy BlellochCarnegie Mellon University, USADOI
|13:55 - 14:20|
Thomas GilrayUniversity of Utah, USA, Michael D. AdamsUniversity of Utah, USA, Matthew MightUniversity of Utah, USADOI
|14:20 - 14:45|