Real-time replication garbage collection
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
A concurrent copying garbage collector for languages that distinguish (im)mutable data
PPOPP '93 Proceedings of the fourth ACM SIGPLAN symposium on Principles and practice of parallel programming
A concurrent, generational garbage collector for a multithreaded implementation of ML
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Concurrent programming in ERLANG (2nd ed.)
Concurrent programming in ERLANG (2nd ed.)
Garbage collection: algorithms for automatic dynamic memory management
Garbage collection: algorithms for automatic dynamic memory management
Generational stack collection and profile-driven pretenuring
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
A compacting incremental collector and its performance in a production quality compiler
Proceedings of the 1st international symposium on Memory management
httperf—a tool for measuring web server performance
ACM SIGMETRICS Performance Evaluation Review
Effective synchronization removal for Java
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Thread-specific heaps for multi-threaded programs
Proceedings of the 2nd international symposium on Memory management
A nonrecursive list compacting algorithm
Communications of the ACM
A parallel, real-time garbage collector
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Proceedings of the 3rd international symposium on Memory management
Heap architectures for concurrent languages using message passing
Proceedings of the 3rd international symposium on Memory management
Writing Apache Modules with PERL and C
Writing Apache Modules with PERL and C
A real-time garbage collector with low overhead and consistent utilization
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
One Pass Real-Time Generational Mark-Sweep Garbage Collection
IWMM '95 Proceedings of the International Workshop on Memory Management
Trading data space for reduced time and code space in real-time garbage collection on stock hardware
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
Exploring the barrier to entry: incremental generational garbage collection for Haskell
Proceedings of the 4th international symposium on Memory management
A Fast Analysis for Thread-Local Garbage Collection with Dynamic Class Loading
SCAM '05 Proceedings of the Fifth IEEE International Workshop on Source Code Analysis and Manipulation
Message analysis for concurrent languages
SAS'03 Proceedings of the 10th international conference on Static analysis
Places: adding message-passing parallelism to racket
Proceedings of the 7th symposium on Dynamic languages
Hi-index | 0.00 |
We present an efficient memory management scheme for concurrent programming languages where communication occurs by 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 multi-threaded implementation and allows the memory reclamation of process-local heaps to be a private business and to often take place without ever triggering 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 and present in detail a generational, incremental garbage collection scheme tailored to the characteristics of this runtime system. The incremental collector imposes no overhead on the mutator, requires no costly barrier mechanisms, has a relatively small space overhead, and can be scheduled on the basis of either a time or a work quantum. 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, telecommunication applications. Our measurements across a range of applications indicate that the incremental collector imposes only very small overhead on the total runtime and can achieve very short pause times (1 ms or less) while being able to sustain a high degree of mutator utilization.