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
A high performance Erlang system
Proceedings of the 2nd ACM SIGPLAN international conference on Principles and practice of declarative programming
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 method for overlapping and erasure of lists
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
Uniprocessor Garbage Collection Techniques
IWMM '92 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
Escape analysis for JavaTM: Theory and practice
ACM Transactions on Programming Languages and Systems (TOPLAS)
Stack allocation and synchronization optimizations for Java using escape analysis
ACM Transactions on Programming Languages and Systems (TOPLAS)
Message analysis for concurrent languages
SAS'03 Proceedings of the 10th international conference on Static analysis
High-level real-time programming in Java
Proceedings of the 5th ACM international conference on Embedded software
Proceedings of the 2005 ACM SIGPLAN workshop on Erlang
Correctness-preserving derivation of concurrent garbage collection algorithms
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Language support for fast and reliable message-based communication in singularity OS
Proceedings of the 1st ACM SIGOPS/EuroSys European Conference on Computer Systems 2006
Hi-index | 0.00 |
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.