Replication-based incremental copying collection
We introduce a new replicationbased copying garbage collection technique. We have implemented one simple variation of this method to provide incremental garbage collection on stock hardware with no special operating system or virtual memory support. The performance of the prototype implementation is excellent: major garbage collection pauses are completely eliminated with only a slight increase in minor collection pause times.
Unlike the standard copying algorithm, the replication-based method does not destroy the original replica when a copy is created. Instead, multiple copies may exist, and various standard strategies for maintaining consistency may be applied. In our implementation for Standard ML of New Jersey, the mutator continues to use the from-space replicas until the collector has achieved a consistent replica of all live data in to-space.
We present a design for a concurrent garbage collector using the replication-based technique. We also expect replication-based gc methods to be useful in providing services for persistence and distribution, and briefly discuss these possibilities.
Keywordsreplication garbage collection incremental collection concurrent collection real-time garbage collection
Unable to display preview. Download preview PDF.
- A. Appel. Simple generational garbage collection and fast allocation. SoftwarePractice and Experience, 19(2):171–183, February 1989.Google Scholar
- Andrew W. Appel, John R. Ellis, and Kai Li. Real-time concurrent garbage collection on stock multiprocessors. In SIGPLAN Symposium on Programming Language Design and Implementation, pages 11–20, 1988.Google Scholar
- Rodney A. Brooks. Trading data space for reduced time and code space in real-time garbage collection. In SIGPLAN Symposium on LISP and Functional Programming, pages 256–262, 1984.Google Scholar
- Robert H. Halstead, Jr. Implementation of multilisp: LISP on a multiprocessor. In ACM Symposium on LISP and Functional Programming, pages 9–17, 1984.Google Scholar
- David A. Moon. Garbage collection in a large lisp system. In Proceedings of the 1984 ACM Symposium on Lisp and Functional Programming, pages 235–246. ACM, August 1984.Google Scholar
- Scott M. Nettles and J.M. Wing. Persistence + Undoability=Transactions. Technical Report CMU-CS-91-173, Carnegie Mellon University, August 1991.Google Scholar
- S. C. North and J.H. Reppy. Concurrent garbage collection on stock hardware. In Gilles Kahn, editor, Functional Programming Languages and Computer Architecture (LNCS 274), Pages 113–133. Springer-Verlag, 1987.Google Scholar
- Paul R. Wilson and Thomas G. Moher. Design of the opportunistic garbage collector. In Proceedings of ACM SIGPLAN 1989 Conference on Object-Oriented Programming: Systems, Languages, and Applications, 1989.Google Scholar