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
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsPreview
Unable to display preview. Download preview PDF.
References
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)
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)
Ben-Ari, M.: Algorithms for on-the-fly garbage collection. ACM Transactions on Programming Languages and Systems 6(3), 333–344 (1984)
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)
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)
Bobrow, D.G.: Managing reentrant structures using reference counts. ACM Trans. On Prog. Languages and Systems 2(3) (1980)
Brownbridge, D.R.: Cyclic reference counting for combinator machines. In: Jouannaud, J.-P. (ed.) FPCA 1985. LNCS, vol. 201. Springer, Heidelberg (1985)
Buyya, R. (ed.): High Performance Cluster Computing: Architectures and Systems. Prentice Hall, Englewood Cliffs (1999)
Collins, G.E.: A method for overlapping and erasure of lists. Comm. of the ACM 3(12), 655–657 (1960)
Dongarra, J., Foster, I., Fox, G., Gropp, W., Kennedy, K., Torczon, L., White, A.: Sourcebook of Parallel Computing. Morgan Kauffman Publishers, San Francisco (2003)
Friedman, D.P., Wise, D.S.: Reference counting can manage the circular environments of mutual recursion. IPL 8(1), 41–45 (1979)
Foster, I., Kesselman, C.: The Grid 2: Blueprint for a New Computing Infrastructure. Morgan Kauffman Publishers, San Francisco (2004)
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)
Hudak, P.R., et al.: Report on the programming language Haskell. ACM SIGPLAN Notices 27(5) (May 1992)
Hughes, J.R.M.: Managing reduction graphs with reference counts, Departamental research report CSC/87/R2, University of Glasgow (1987)
Jones, R.E., Lins, R.D.: Garbage Collection Algorithms for Dynamic Memory Management. John Wiley & Sons, Chichester 1996 (revised edition, 1999)
Kakuta, Nakamura, Iida: Information Proc. Letters 23(1), 33–37 (1986)
Lamport, L.: Garbage collection with multiple processes: an exercise in parallelism. In: IEEE Conference on Parallel Processing, pp. 50–54. IEEE, Los Alamitos (1976)
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
Gries, D.: An exercise in proving parallel programs correct. Communications of ACM 20(12), 921–930 (1977)
Lins, R.D.: A shared memory architecture for parallel cyclic reference counting. Microprocessing and microprogramming 34, 31–35 (1991)
Lins, R.D.: A multi-processor shared memory architecture for parallel cyclic reference counting. Microprocessing and microprogramming 35, 563–568 (1992)
Lins, R.D.: Cyclic Reference counting with lazy mark-scan. IPL 44, 215–220 (1992)
Lins, R.D.: Generational cyclic reference counting. IPL 46, 19–20 (1993)
Lins, R.D.: An Efficient Algorithm for Cyclic Reference Counting. Information Processing Letters 83(3), 145–150 (2002)
Lins, R.D.: Efficient Cyclic Weighted Reference Counting. In: Proceedings of SBAC-PAD 2002. IEEE Press, Los Alamitos (2002)
Lins, R.D.: Efficient Lazy Reference Counting. Journal Of Universal Computer Science 9(8), 813–828 (2003)
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)
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)
Lins, R.D., Jones, R.E.: Cyclic weighted reference counting. In: Boyanov, K. (ed.) Intern. Workshop on Parallel and Distributed Processing, NH (May 1993)
Lins, R.D., Salzano Filho, J.A.: Optimising the Jump_Stack. In: Proceedings of SBLP 2002 (September 2002)
MacCarthy, J.: Recursive functions of symbolic expressions and their computation by machine. In: CACM (April 1960)
McBeth, J.H.: On the reference counter method. Comm. of the ACM 6(9), 575 (1963)
Martinez, A.D., Wachenchauzer, R., Lins, R.D.: Cyclic reference counting with local mark-scan. IPL 34(1990), 31–35 (1990)
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)
Salkild, J.D.: Implementation and Analysis of two Reference Counting Algorithms. Master thesis, University College, London (1987)
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)
Steele, G.L.: Multiprocessing compactifying garbage collection. Communications of ACM 18(09), 495–508 (1975)
Thompson, S.J., Lins, R.D.: A correction to Brownbridge’s algorithm (1987)
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)
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)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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)