A compacting garbage collector for unidirectional heaps

  • Kent Boortz
  • Dan Sahlin
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1467)


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.


Garbage Collection Memory Management Read Operation Garbage Collector Extra Memory 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [1]
    Karen Appleby, Mats Carlsson, Seif Haridi, and Dan Sahlin. Garbage collection for Prolog based on WAM. CACM, pages 719–741, 1988.Google Scholar
  2. [2]
    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
  3. [3]
    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
  4. [4]
    Joe Armstrong and Robert Virding. One pass real-time generational mark-sweep garbage collection. In International Workshop on Memory Management 1995, 1995.Google Scholar
  5. [5]
    Joe Armstrong, Robert Virding, Claes Wikström, and Mike Williams. Concurrent Programming in ERLANG. Prentice Hall, 1996.Google Scholar
  6. [6]
    David A. Fisher. Bounded workspace garbage collection in an address-order preserving list processing environment. Info. Proc. Letters, 3(1), July 1974.Google Scholar
  7. [7]
    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
  8. [8]
    F.L. Morris. A time and space efficient garbage compaction algorithm. CACM 21, 21(8), 1978.Google Scholar
  9. [9]
    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
  10. [10]
    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 Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1998

Authors and Affiliations

  • Kent Boortz
    • 1
  • Dan Sahlin
    • 2
  1. 1.Erlang SystemsEricsson Software TechnologySweden
  2. 2.Computer Science LaboratoryEricsson TelecomSweden

Personalised recommendations