Skip to main content

A compacting garbage collector for unidirectional heaps

  • Conference paper
  • First Online:
Book cover Implementation of Functional Languages (IFL 1997)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 1467))

Included in the following conference series:

  • 110 Accesses

Abstract

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  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. 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. 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. 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. Joe Armstrong, Robert Virding, Claes Wikström, and Mike Williams. Concurrent Programming in ERLANG. Prentice Hall, 1996.

    Google Scholar 

  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. 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. F.L. Morris. A time and space efficient garbage compaction algorithm. CACM 21, 21(8), 1978.

    Google Scholar 

  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. 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 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Chris Clack Kevin Hammond Tony Davie

Rights and permissions

Reprints and permissions

Copyright information

© 1998 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Boortz, K., Sahlin, D. (1998). A compacting garbage collector for unidirectional heaps. In: Clack, C., Hammond, K., Davie, T. (eds) Implementation of Functional Languages. IFL 1997. Lecture Notes in Computer Science, vol 1467. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0055441

Download citation

  • DOI: https://doi.org/10.1007/BFb0055441

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-64849-9

  • Online ISBN: 978-3-540-68528-9

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics