A compacting garbage collector for unidirectional heaps
A unidirectional heap is a heap where all pointers go in one direction, e.g. from newer to older objects. For a strict functional language, such as Erlang, the heap may be arranged so that it is unidirectional. We here present a compacting garbage collection algorithm which utilizes the fact that a heap is unidirectional.
Only one memory space is used in our algorithm. In fact, no extra memory is used at all, not even any reserved bits within the cells. The algorithm is quite easy to extend to a variant of generational garbage collection.
KeywordsGarbage Collection Memory Management Read Operation Garbage Collector Extra Memory
Unable to display preview. Download preview PDF.
- Karen Appleby, Mats Carlsson, Seif Haridi, and Dan Sahlin. Garbage collection for Prolog based on WAM. CACM, pages 719–741, 1988.Google Scholar
- J. L. Armstrong, B. O. Däcker, S. R. Virding, and M. C. Williams. Implementing a functional language for highly parallel real time applications. In SETSS 92, 1992.Google Scholar
- Joe Armstrong. Erlang — a survey of the language and its industrial applications. In INAP'96 — The 9th Exhibitions and Symposium on Industrial Applications of Prolog, October 1996. Hino, Tokyo, Japan.Google Scholar
- Joe Armstrong and Robert Virding. One pass real-time generational mark-sweep garbage collection. In International Workshop on Memory Management 1995, 1995.Google Scholar
- Joe Armstrong, Robert Virding, Claes Wikström, and Mike Williams. Concurrent Programming in ERLANG. Prentice Hall, 1996.Google Scholar
- David A. Fisher. Bounded workspace garbage collection in an address-order preserving list processing environment. Info. Proc. Letters, 3(1), July 1974.Google Scholar
- H. Lieberman and C. Hewitt. A real time garbage collector based on the life time of objects. CACM, 26(6): 419–429, 1983.Google Scholar
- F.L. Morris. A time and space efficient garbage compaction algorithm. CACM 21, 21(8), 1978.Google Scholar
- Robert Virding. A garbage collector for the concurrent real-time language Erlang. In Henry G. Baker, editor, International Workshop on Memory Management 1995, number 986 in Lecture Notes in Computer Science. Springer, September 1995. ISBN 3-540-60368-9.Google Scholar
- Paul R. Wilson. Uniprocessor garbage collection techniques. In International Workshop on Memory Management 1992, volume 637. Springer-Verlag, September 1992. A much expanded version of the paper is available from http://www.cs.utexas.edu/users/oops/papers.html.Google Scholar