The design and evaluation of a high performance Smalltalk system
The design and evaluation of a high performance Smalltalk system
Proc. of a conference on Functional programming languages and computer architecture
Real-time concurrent collection on stock multiprocessors
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
The definition of Standard ML
Mostly parallel garbage collection
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
Compiling with continuations
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
Signatures for a network protocol stack: a systems application of Standard ML
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
The art of computer programming, volume 1 (3rd ed.): fundamental algorithms
The art of computer programming, volume 1 (3rd ed.): fundamental algorithms
A real-time garbage collector based on the lifetimes of objects
Communications of the ACM
List processing in real time on a serial computer
Communications of the ACM
On-the-fly garbage collection: an exercise in cooperation
Communications of the ACM
Multiprocessing compactifying garbage collection
Communications of the ACM
A LISP garbage-collector for virtual-memory computer systems
Communications of the ACM
Recursive functions of symbolic expressions and their computation by machine, Part I
Communications of the ACM
Uniprocessor Garbage Collection Techniques
IWMM '92 Proceedings of the International Workshop on Memory Management
Mark DURING Sweep rather than Mark THEN Sweep
PARLE '89 Proceedings of the Parallel Architectures and Languages Europe, Volume I: Parallel Architectures
Implementation of multilisp: Lisp on a multiprocessor
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
A LISP Garbage Collector Algorithm Using Serial Secondary Storage
A LISP Garbage Collector Algorithm Using Serial Secondary Storage
A generational on-the-fly garbage collector for Java
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Java without the coffee breaks: a nonintrusive multiprocessor garbage collector
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
A Multithreaded Concurrent Garbage Collector Parallelizing the New Instruction in Java
IPDPS '02 Proceedings of the 16th International Parallel and Distributed Processing Symposium
Concurrent Cycle Collection in Reference Counted Systems
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
An on-the-fly mark and sweep garbage collector based on sliding views
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Real-Time Garbage Collection for a Multithreaded Java Microcontroller
Real-Time Systems
Realtime garbage collection in the JamaicaVM 3.0
JTRES '07 Proceedings of the 5th international workshop on Java technologies for real-time and embedded systems
Limits of parallel marking garbage collection
Proceedings of the 7th international symposium on Memory management
Proceedings of the 4th annual Symposium on Cloud Computing
Hi-index | 0.00 |
We describe a new incremental algorithm for the concurrent reclamation of a program's allocated, yet unreachable, data. Our algorithm is a variant of mark-&-sweep collection that---unlike prior designs---runs mutator, marker, and sweeper threads concurrently without explicit fine-grain synchronization on shared-memory multiprocessors. A global, but infrequent, synchronization coordinates the per-object coloring marks used by the three threads; fine-grain synchronization is achieved without locking via the basic memory consistency guarantees commonly provided by multiprocessor hardware. We have implemented two versions of this algorithm (called VCGC): in the Inferno operating system and in the SML/NJ ML compiler. Measurements, compared to a sequential generational collector, indicate that VCGC can substantially reduce worst-case pause latencies as well as reduce overall memory usage. We remark that the degrees of freedom on the rates of marking and sweeping enable exploration of a range of resource tradeoffs, but makes "optimal" tuning for even a small set of applications difficult.