Abstract
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 multicore CPUs. Our benchmark tests show a drastically short pause time with reasonably low overhead compared to the sequential bitmap-marking collector.
Original language | English |
---|---|
Pages (from-to) | 421-433 |
Number of pages | 13 |
Journal | ACM SIGPLAN Notices |
Volume | 51 |
Issue number | 9 |
DOIs | |
Publication status | Published - 2016 Sept 4 |
Keywords
- Concurrent Garbage Collection
- Functional Languages
- Multicore Processors
- Standard ML
ASJC Scopus subject areas
- Computer Science(all)