New Algorithms and Applications of Cyclic Reference Counting

  • Rafael Dueire Lins
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4178)


Reference counting is a simple and efficient way of performing graph transformation and management in which each graph node stores the number of pointers to it. Graph operations are performed in such a way to keep this property invariant. The major drawback of standard reference counting is its inability to work with cyclic structures, which appear ever so often in real applications. The author of this talk developed a series of cyclic reference counting algorithms whose applicability goes far beyond the implementation of garbage collectors in programming languages. This paper presents the milestones in the history of cyclic reference counting followed by two new applications: the consistent management of Web pages in the Internet and the correctly handling of processes in clusters and grids.


cyclic graphs reference counting webpage management process management 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Bacon, D.F., Rajan, V.T.: Concurrent Cycle Collection in Reference Counted Systems. In: Knudsen, J.L. (ed.) ECOOP 2001. LNCS, vol. 2072, p. 207. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  2. 2.
    Bacon, D.F., Attanasio, C.R., Lee, H.B., Rajan, R.T., Smith, S.: Java without the Coffee Breaks: A Nonintrusive Multiprocessor Garbage Collector. In: Proceedings of the SIGPLAN Conference on Programming Language Design and Implementation (June 2001) (SIGPLAN Not. 36, 5)Google Scholar
  3. 3.
    Ben-Ari, M.: Algorithms for on-the-fly garbage collection. ACM Transactions on Programming Languages and Systems 6(3), 333–344 (1984)zbMATHCrossRefGoogle Scholar
  4. 4.
    Bevan, D.I.: Distributed garbage collection using reference counting. In: de Bakker, J.W., Nijman, A.J., Treleaven, P.C. (eds.) PARLE 1987. LNCS, vol. 259, pp. 176–187. Springer, Heidelberg (1987)Google Scholar
  5. 5.
    Blelloch, G., Cheng, P.: On Bonding Time and Space for Multiprocessor Garbage Collection. In: Proc. of ACM SIGPLAN Conference on Programming Languages Design and Architecture (March 1999)Google Scholar
  6. 6.
    Bobrow, D.G.: Managing reentrant structures using reference counts. ACM Trans. On Prog. Languages and Systems 2(3) (1980)Google Scholar
  7. 7.
    Brownbridge, D.R.: Cyclic reference counting for combinator machines. In: Jouannaud, J.-P. (ed.) FPCA 1985. LNCS, vol. 201. Springer, Heidelberg (1985)Google Scholar
  8. 8.
    Buyya, R. (ed.): High Performance Cluster Computing: Architectures and Systems. Prentice Hall, Englewood Cliffs (1999)Google Scholar
  9. 9.
    Collins, G.E.: A method for overlapping and erasure of lists. Comm. of the ACM 3(12), 655–657 (1960)CrossRefGoogle Scholar
  10. 10.
    Dongarra, J., Foster, I., Fox, G., Gropp, W., Kennedy, K., Torczon, L., White, A.: Sourcebook of Parallel Computing. Morgan Kauffman Publishers, San Francisco (2003)Google Scholar
  11. 11.
    Friedman, D.P., Wise, D.S.: Reference counting can manage the circular environments of mutual recursion. IPL 8(1), 41–45 (1979)CrossRefGoogle Scholar
  12. 12.
    Foster, I., Kesselman, C.: The Grid 2: Blueprint for a New Computing Infrastructure. Morgan Kauffman Publishers, San Francisco (2004)Google Scholar
  13. 13.
    Hudak, P., Keller, R.M.: Garbage collection and task deletion in distributed applicative processing systems. In: Proceedings of the Conference on Lisp and Functional Programming Languages, August 1982, pp. 168–178. ACM, New York (1982)Google Scholar
  14. 14.
    Hudak, P.R., et al.: Report on the programming language Haskell. ACM SIGPLAN Notices 27(5) (May 1992)Google Scholar
  15. 15.
    Hughes, J.R.M.: Managing reduction graphs with reference counts, Departamental research report CSC/87/R2, University of Glasgow (1987)Google Scholar
  16. 16.
    Jones, R.E., Lins, R.D.: Garbage Collection Algorithms for Dynamic Memory Management. John Wiley & Sons, Chichester 1996 (revised edition, 1999)Google Scholar
  17. 17.
    Kakuta, Nakamura, Iida: Information Proc. Letters 23(1), 33–37 (1986)Google Scholar
  18. 18.
    Lamport, L.: Garbage collection with multiple processes: an exercise in parallelism. In: IEEE Conference on Parallel Processing, pp. 50–54. IEEE, Los Alamitos (1976)Google Scholar
  19. 19.
    Lermen, L.-M., Maurer, D.: A protocol for distributed reference counting. In: Proc.s of ACM Conference on Lisp and Functional Programming, pp. 343–350Google Scholar
  20. 20.
    Gries, D.: An exercise in proving parallel programs correct. Communications of ACM 20(12), 921–930 (1977)zbMATHCrossRefMathSciNetGoogle Scholar
  21. 21.
    Lins, R.D.: A shared memory architecture for parallel cyclic reference counting. Microprocessing and microprogramming 34, 31–35 (1991)Google Scholar
  22. 22.
    Lins, R.D.: A multi-processor shared memory architecture for parallel cyclic reference counting. Microprocessing and microprogramming 35, 563–568 (1992)CrossRefGoogle Scholar
  23. 23.
    Lins, R.D.: Cyclic Reference counting with lazy mark-scan. IPL 44, 215–220 (1992)zbMATHCrossRefGoogle Scholar
  24. 24.
    Lins, R.D.: Generational cyclic reference counting. IPL 46, 19–20 (1993)zbMATHCrossRefMathSciNetGoogle Scholar
  25. 25.
    Lins, R.D.: An Efficient Algorithm for Cyclic Reference Counting. Information Processing Letters 83(3), 145–150 (2002)zbMATHCrossRefMathSciNetGoogle Scholar
  26. 26.
    Lins, R.D.: Efficient Cyclic Weighted Reference Counting. In: Proceedings of SBAC-PAD 2002. IEEE Press, Los Alamitos (2002)Google Scholar
  27. 27.
    Lins, R.D.: Efficient Lazy Reference Counting. Journal Of Universal Computer Science 9(8), 813–828 (2003)Google Scholar
  28. 28.
    Lins, R.D.: A New Multi-Processor Architecture for Parallel Lazy Cyclic Reference Counting. In: Proceedings of SBAC-PAD 2005. IEEE Press, Los Alamitos (2005)Google Scholar
  29. 29.
    Lins, R.D., de França, A.S.: A Scheme for the Consistent Management of Web Pages. In: IADIS - INTERNATIONAL CONFERENCE ON COMPUTER APPLICATIONS, Algarve, vol. 2, pp. 425–428. IADIS Press (2005)Google Scholar
  30. 30.
    Lins, R.D., Jones, R.E.: Cyclic weighted reference counting. In: Boyanov, K. (ed.) Intern. Workshop on Parallel and Distributed Processing, NH (May 1993)Google Scholar
  31. 31.
    Lins, R.D., Salzano Filho, J.A.: Optimising the Jump_Stack. In: Proceedings of SBLP 2002 (September 2002)Google Scholar
  32. 32.
    MacCarthy, J.: Recursive functions of symbolic expressions and their computation by machine. In: CACM (April 1960)Google Scholar
  33. 33.
    McBeth, J.H.: On the reference counter method. Comm. of the ACM 6(9), 575 (1963)CrossRefGoogle Scholar
  34. 34.
    Martinez, A.D., Wachenchauzer, R., Lins, R.D.: Cyclic reference counting with local mark-scan. IPL 34(1990), 31–35 (1990)zbMATHCrossRefGoogle Scholar
  35. 35.
    Pepels, E.J.H., van Eekelen, M.C.J.D., Plasmeijer, M.J.: A cyclic reference counting algorithm and its proof. Internal Rept. 88-10, U. of Nijmegen (1988)Google Scholar
  36. 36.
    Salkild, J.D.: Implementation and Analysis of two Reference Counting Algorithms. Master thesis, University College, London (1987)Google Scholar
  37. 37.
    Pollack, F.J., Cox, G.W., Hammerstein, D.W., Kahn, K.C., Lai, K.K., Rattner, J.R.: Supporting Ada memory management in the iAPX-432. Proceedings of the Symposium on Architectural Support for Programming Languages and Operating Systems. SIGPLAN Not. 17(4), 117–131 (1982)CrossRefGoogle Scholar
  38. 38.
    Steele, G.L.: Multiprocessing compactifying garbage collection. Communications of ACM 18(09), 495–508 (1975)zbMATHCrossRefGoogle Scholar
  39. 39.
    Thompson, S.J., Lins, R.D.: A correction to Brownbridge’s algorithm (1987)Google Scholar
  40. 40.
    Watson, P., Watson, I.: An efficient garbage collection scheme for parallel computer architectures. In: de Bakker, J.W., Nijman, A.J., Treleaven, P.C. (eds.) PARLE 1987. LNCS, vol. 259, pp. 432–443. Springer, Heidelberg (1987)Google Scholar
  41. 41.
    Wise, D.S.: Design for a multiprocessing heap with on-board reference counting. In: Jouannaud, J.-P. (ed.) FPCA 1985. LNCS, vol. 201, pp. 289–304. Springer, Heidelberg (1985)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • Rafael Dueire Lins
    • 1
  1. 1.Departamento de Eletrônica e Sistemas, CTGUniversidade Federal de PernambucoRecifeBrazil

Personalised recommendations