Skip to main content

New Algorithms and Applications of Cyclic Reference Counting

  • Conference paper

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 4178))

Abstract

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.

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

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  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)

    Chapter  Google Scholar 

  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. Ben-Ari, M.: Algorithms for on-the-fly garbage collection. ACM Transactions on Programming Languages and Systems 6(3), 333–344 (1984)

    Article  MATH  Google Scholar 

  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. 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. Bobrow, D.G.: Managing reentrant structures using reference counts. ACM Trans. On Prog. Languages and Systems 2(3) (1980)

    Google Scholar 

  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. Buyya, R. (ed.): High Performance Cluster Computing: Architectures and Systems. Prentice Hall, Englewood Cliffs (1999)

    Google Scholar 

  9. Collins, G.E.: A method for overlapping and erasure of lists. Comm. of the ACM 3(12), 655–657 (1960)

    Article  Google Scholar 

  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. Friedman, D.P., Wise, D.S.: Reference counting can manage the circular environments of mutual recursion. IPL 8(1), 41–45 (1979)

    Article  Google Scholar 

  12. Foster, I., Kesselman, C.: The Grid 2: Blueprint for a New Computing Infrastructure. Morgan Kauffman Publishers, San Francisco (2004)

    Google Scholar 

  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. Hudak, P.R., et al.: Report on the programming language Haskell. ACM SIGPLAN Notices 27(5) (May 1992)

    Google Scholar 

  15. Hughes, J.R.M.: Managing reduction graphs with reference counts, Departamental research report CSC/87/R2, University of Glasgow (1987)

    Google Scholar 

  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. Kakuta, Nakamura, Iida: Information Proc. Letters 23(1), 33–37 (1986)

    Google Scholar 

  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. Lermen, L.-M., Maurer, D.: A protocol for distributed reference counting. In: Proc.s of ACM Conference on Lisp and Functional Programming, pp. 343–350

    Google Scholar 

  20. Gries, D.: An exercise in proving parallel programs correct. Communications of ACM 20(12), 921–930 (1977)

    Article  MATH  MathSciNet  Google Scholar 

  21. Lins, R.D.: A shared memory architecture for parallel cyclic reference counting. Microprocessing and microprogramming 34, 31–35 (1991)

    Google Scholar 

  22. Lins, R.D.: A multi-processor shared memory architecture for parallel cyclic reference counting. Microprocessing and microprogramming 35, 563–568 (1992)

    Article  Google Scholar 

  23. Lins, R.D.: Cyclic Reference counting with lazy mark-scan. IPL 44, 215–220 (1992)

    Article  MATH  Google Scholar 

  24. Lins, R.D.: Generational cyclic reference counting. IPL 46, 19–20 (1993)

    Article  MATH  MathSciNet  Google Scholar 

  25. Lins, R.D.: An Efficient Algorithm for Cyclic Reference Counting. Information Processing Letters 83(3), 145–150 (2002)

    Article  MATH  MathSciNet  Google Scholar 

  26. Lins, R.D.: Efficient Cyclic Weighted Reference Counting. In: Proceedings of SBAC-PAD 2002. IEEE Press, Los Alamitos (2002)

    Google Scholar 

  27. Lins, R.D.: Efficient Lazy Reference Counting. Journal Of Universal Computer Science 9(8), 813–828 (2003)

    Google Scholar 

  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. 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. 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. Lins, R.D., Salzano Filho, J.A.: Optimising the Jump_Stack. In: Proceedings of SBLP 2002 (September 2002)

    Google Scholar 

  32. MacCarthy, J.: Recursive functions of symbolic expressions and their computation by machine. In: CACM (April 1960)

    Google Scholar 

  33. McBeth, J.H.: On the reference counter method. Comm. of the ACM 6(9), 575 (1963)

    Article  Google Scholar 

  34. Martinez, A.D., Wachenchauzer, R., Lins, R.D.: Cyclic reference counting with local mark-scan. IPL 34(1990), 31–35 (1990)

    Article  MATH  Google Scholar 

  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. Salkild, J.D.: Implementation and Analysis of two Reference Counting Algorithms. Master thesis, University College, London (1987)

    Google Scholar 

  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)

    Article  Google Scholar 

  38. Steele, G.L.: Multiprocessing compactifying garbage collection. Communications of ACM 18(09), 495–508 (1975)

    Article  MATH  Google Scholar 

  39. Thompson, S.J., Lins, R.D.: A correction to Brownbridge’s algorithm (1987)

    Google Scholar 

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

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2006 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Lins, R.D. (2006). New Algorithms and Applications of Cyclic Reference Counting. In: Corradini, A., Ehrig, H., Montanari, U., Ribeiro, L., Rozenberg, G. (eds) Graph Transformations. ICGT 2006. Lecture Notes in Computer Science, vol 4178. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11841883_3

Download citation

  • DOI: https://doi.org/10.1007/11841883_3

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-38870-8

  • Online ISBN: 978-3-540-38872-2

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics