Indirect reference counting: A distributed garbage collection algorithm

Submitted Presentations
Part of the Lecture Notes in Computer Science book series (LNCS, volume 505)


This paper exposes a Garbage Collection (GC) algorithm for loosely-coupled multi-processors. The algorithm is based on reference counting and is designed to reclaim distant-pointed objects. It behaves like weighted reference counting, using only decrement messages. The main advantages are that it never creates indirect cells (so accesses to distant pointed objects are always done in constant time) and it does not need synchronization with the proprietary site of the object. Object migration is also supported with only one decrement message, involving only the source and destination sites. On the other hand, two extra fields are needed in every remote pointer and decrement messages can be generated in cascades of arbitrary size, making it less predictable.

A first version adapted to a distributed Lisp running on a group of Transputer1 processors will be presented along with some measures. Each processor has its own local Garbage Collector (of the Mark-Scan type) and the indirect reference counting for remote pointers has been implemented without having to change the local GC.

In this paper the algorithm is presented, it is compared with the weighted reference counting garbage collector and some experimental results are shown along with some implementation issues.


Garbage Collection Reference Counting Distributed Systems 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [Augu 87]
    Lex Augusteijn, Garbage Collection in a Distributed Environment, LNCS 259, PARLE Proceedings Vol. I, Eindhoven, Springer Verlag, June 1987.Google Scholar
  2. [Beck 86]
    M. J. Beckerle, K. Ekanadham, Distributed Garbage Collection with no Global Synchronization, IBM Research Report, RC 11667 (#52377), January 1986.Google Scholar
  3. [Beva 87]
    D. I. Bevan, Distributed Garbage Collection Using Reference Counting, LNCS 259, PARLE Proceedings Vol. II, Eindhoven, Springer Verlag, June 1987.Google Scholar
  4. [Bobr 80]
    D. G. Bobrow, Managing Reentrant Structures Using Reference Counts, ACM Trans. on Programming Languages and Systems, Vol. 2, No. 3, pp. 269–273, July 1980.CrossRefGoogle Scholar
  5. [Brow 85]
    D. R. Brownbridge, Cyclic Reference Counting for Combinator Machines, Functional Programming Languages and Computer Architecture, LNCS 201, pp. 273–288, Springer Verlag, September 1985.Google Scholar
  6. [Chai 84]
    J. Chailloux, M. Devin, J. M. Hullot, Le-Lisp: A Portable and Efficient Lisp System, Proc. 1984 ACM Symposium on Lisp and Functional Programming, August 1984.Google Scholar
  7. [Chan 85]
    K. M. Chandy, L. Lamport, Distributed snapshots: Determining global states of distributed systems, ACM Trans. on Computer Systems, Vol. 3, No. 1, February 1985.Google Scholar
  8. [Coll 60]
    G. E. Collins, A Method for Overlapping and Erasure of Lists, Comm. of the ACM, Vol. 3, No. 12, pp. 655–657, December 1960.CrossRefGoogle Scholar
  9. [Derb 90]
    M. H. Derbyshire, Mark Scan Garbage Collection On A Distributed Architecture, Lisp and Symbolic Computation, Vol. 3, No. 2, pp. 135–170, April 1990.CrossRefGoogle Scholar
  10. [Dijk 78]
    E. W. Dijkstra, L. Lamport, A. J. Martin, C. S. Scholten, E. F. M. Steffens, On-the-fly Garbage Collection: an exercise in cooperation, Comm. of the ACM Vol. 21, No. 11, November 1978.Google Scholar
  11. [Dijk 80]
    E. W. Dijkstra, C. S. Scholten, Termination Detection for Diffusing Computations, Information Processing Letters, Vol. 11, No. 1, August 1980.Google Scholar
  12. [Fost 89]
    I. Foster, A Multicomputer Garbage Collector for a Single-Assignment Language, Int. Journal of Parallel Programming, Vol. 18, No. 3, 1989.Google Scholar
  13. [Gold 89]
    B. Goldberg, Generational Reference Counting: A Reduced-Communication Distributed Storage Reclamation Scheme, SIGPLAN Conference on Programming Languages Design and Implementation, Portland, Oregon, June 1989.Google Scholar
  14. [Huda 82]
    P. Hudak, R. M. Keller, Garbage Collection and Task Deletion in a Distributed Applicative Processing System, 1982 ACM Symposium on Lisp and Functional Programming, 1982.Google Scholar
  15. [Lamp 78]
    L. Lamport, Time, Clocks, and the Ordering of Events in a Distributed System, Comm. ACM, Vol. 21, No. 7, pp. 558–565, July 1978.CrossRefGoogle Scholar
  16. [Lerm 86]
    C. W. Lermen, D. Maurer, A Protocol for Distributed Reference Counting, Proc. 1986 ACM Conference on Lisp and Functional Programming, Cambridge, Massachussets, August 1986.Google Scholar
  17. [Piqu 90a]
    J. M. Piquer, Un GC parallèle pour un Lisp distribué, Journées francophones des languages applicatifs, La Rochelle, January 1990. BIGRE 69, July 1990 (french).Google Scholar
  18. [Piqu 90b]
    J. M. Piquer, Sharing Data Structures in a Distributed Lisp, Proc. High Performance and Parallel Computing in Lisp Workshop, Twickenham, London, UK, November 1990.Google Scholar
  19. [Ruda 86]
    M. Rudalics, Distributed Copying Garbage Collection, Proceedings of the ACM Conference on LISP and functional prog., Cambridge, Massachussets, August 1986.Google Scholar
  20. [Wats 87]
    P. Watson, I. Watson, An Efficient Garbage Collection Scheme for Parallel Computer Architectures, LNCS 259, PARLE Proceedings Vol. II, Eindhoven, Springer Verlag, June 1987.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1991

Authors and Affiliations

  1. 1.INRIA - École PolytechniqueLe Chesnay CedexFrance

Personalised recommendations