A fully concurrent garbage collector for functional programs on multicore processors

Katsuhiro Ueno, Atsushi Ohori

Research output: Contribution to journalArticlepeer-review

3 Citations (Scopus)


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 languageEnglish
Pages (from-to)421-433
Number of pages13
JournalACM SIGPLAN Notices
Issue number9
Publication statusPublished - 2016 Sept 4


  • Concurrent Garbage Collection
  • Functional Languages
  • Multicore Processors
  • Standard ML

ASJC Scopus subject areas

  • Computer Science(all)


Dive into the research topics of 'A fully concurrent garbage collector for functional programs on multicore processors'. Together they form a unique fingerprint.

Cite this