Message analysis-guided allocation and low-pause incremental garbage collection in a concurrent language

  • Authors:
  • Konstantinos Sagonas;Jesper Wilhelmsson

  • Affiliations:
  • Uppsala University, Sweden;Uppsala University, Sweden

  • Venue:
  • Proceedings of the 4th international symposium on Memory management
  • Year:
  • 2004

Quantified Score

Hi-index 0.00

Visualization

Abstract

We present a memory management scheme for a concurrent programming language where communication occurs using message-passing with copying semantics. The runtime system is built around process-local heaps, which frees the memory manager from redundant synchronization in a multithreaded implementation and allows the memory reclamation of process-local heaps to be a private business and to often take place without garbage collection. The allocator is guided by a static analysis which speculatively allocates data possibly used as messages in a shared memory area. To respect the (soft) real-time requirements of the language, we develop a generational, incremental garbage collection scheme tailored to the characteristics of this runtime system. The collector imposes no overhead on the mutator, requires no costly barrier mechanisms, and has a relatively small space overhead. We have implemented these schemes in the context of an industrial-strength implementation of a concurrent functional language used to develop large-scale, highly concurrent, embedded applications. Our measurements across a range of applications indicate that the incremental collector substantially reduces pause times, imposes only very small overhead on the total runtime, and achieves a high degree of mutator utilization.