Affiliation:
1. Tohoku University, Japan
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.
Funder
Japan Society for the Promotion of Science
Publisher
Association for Computing Machinery (ACM)
Subject
Computer Graphics and Computer-Aided Design,Software
Cited by
4 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Cloaca: A Concurrent Hardware Garbage Collector for Non-strict Functional Languages;Proceedings of the 17th ACM SIGPLAN International Haskell Symposium;2024-08-28
2. Garbage-Collection Safety for Region-Based Type-Polymorphic Programs;Proceedings of the ACM on Programming Languages;2023-06-06
3. Efficient tree-traversals: reconciling parallelism and dense data representations;Proceedings of the ACM on Programming Languages;2021-08-22
4. Retrofitting parallelism onto OCaml;Proceedings of the ACM on Programming Languages;2020-08-02