skip to main content
article
Free Access

Birrell's distributed reference listing revisited

Published:01 November 2005Publication History
Skip Abstract Section

Abstract

The Java RMI collector is arguably the most widely used distributed garbage collector. Its distributed reference listing algorithm was introduced by Birrell et al. in the context of Network Objects, where the description was informal and heavily biased toward implementation. In this article, we formalize this algorithm in an implementation-independent manner, which allows us to clarify weaknesses of the initial presentation. In particular, we discover cases critical to the correctness of the algorithm that were not accounted for by Birrell. We use our formalization to derive an invariant-based proof of correctness of the algorithm that avoids notoriously difficult temporal reasoning. Furthermore, we offer a novel graphical representation of the state transition diagram, which we use to provide intuitive explanations of the algorithm and to investigate its tolerance to faults in a systematic manner. Finally, we examine how the algorithm may be optimized, either by placing constraints on message channels or by tightening the coupling between the application program and distributed garbage collector.

References

  1. Abdullahi, S. E. and Ringwood, G. A. 1998. Garbage collecting the Internet: A survey of distributed garbage collection. ACM Comput. Surv. 30, 3 (Sept.), 330--373. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Barras, B., Boutin, S., Cornes, C., Courant, J., Filliatre, J., Giménez, E., Herbelin, H., Huet, G., Muñoz, C., Murthy, C., Parent, C., Paulin, C., Saïbi, A., and Werner, B. 1997. The Coq proof assistant reference manual---version V6.1. Tech. rep. 0203. INRIA, Rocquencon, France.Google ScholarGoogle Scholar
  3. Ben-Ari, M. 1982. On-the-fly garbage collection: New algorithms inspired by program proofs. In Automata, Languages and Programming. Ninth Colloquium, (Aarhus, Denmark), M. Nielsen and E. M. Schmidt, Eds. Springer-Verlag, Berlin, Germany, 14--22. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Ben-Ari, M. 1984. Algorithms for on-the-fly garbage collection. ACM Trans. Program. Lang. Syst. 6, 3 (July), 333--344. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Bevan, D. I. 1987. Distributed garbage collection using reference counting. See de Bakker, et al. {1987}, 176--187.Google ScholarGoogle Scholar
  6. Birrell, A., Evers, D., Nelson, G., Owicki, S., and Wobber, E. 1993. Distributed garbage collection for Network Objects. Tech. rep. 116. Digital Systems Research Center, Palo Alto, CA.Google ScholarGoogle Scholar
  7. Birrell, A., Nelson, G., Owicki, S., and Wobber, E. 1994a. Network Objects. Tech. rep. 115. Digital Systems Research Center, Palo Alto, CA.Google ScholarGoogle Scholar
  8. Birrell, A., Nelson, G., Owicki, S., and Wobber, E. 1994b. Network Objects. In Proceedings of the Fourteenth ACM Symposium on Operating Systems Principles (Asheville, NC). ACM Press, New York, NY, 217--230. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Birrell, A., Nelson, G., Owicki, S., and Wobber, E. 1995. Network Objects. Softw.: Pract. Exper. 25, 4 (Dec.), 87--130. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Collins, G. E. 1960. A method for overlapping and erasure of lists. Commun. ACM 3, 12 (Dec.), 655--657. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Corporaal, H., Veldman, T., and van de Goor, A. J. 1990. Efficient, reference weight-based garbage collection method for distributed systems. In Proceedings of PARBASE-90: International Conference on Databases, Parallel Architectures, and Their Applications (Miami Beach). IEEE Press, Los Alamitos, CA, 463--465.Google ScholarGoogle Scholar
  12. de Bakker, J. W., Nijman, L., and Treleaven, P. C., Eds. 1987. PARLE'87 Parallel Architectures and Languages Europe (Eindhoven, The Netherlands). Lecture Notes in Computer Science, vol. 258/259. Springer-Verlag, Berlin, Germany. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Dickman, P. 1992. Optimising weighted reference counts for scalable fault-tolerant distributed object-support systems. Unpublished note.Google ScholarGoogle Scholar
  14. Dickman, P. 2000. Diffusion tree redirection for indirect reference counting. In Proceedings of the Second International Symposium on Memory Management (Minneapolis, MN), T. Hosking, Ed. ACM Press, New York, NY. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Dijkstra, E. W., Lamport, L., Martin, A. J., Scholten, C. S., and Steffens, E. F. M. 1978. On-the-fly garbage collection: An exercise in cooperation. Commun. ACM 21, 11 (Nov.), 966--975. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Doligez, D. and Gonthier, G. 1994. Portable, unobtrusive garbage collection for multiprocessor systems. In Proceedings of the Twenty-First SIGPLAN-SIGACT ACM Symposium on Principles of Programming Languages (Portland, OR). ACM Press New York, NY, 70--83. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Foster, I. 1989. A multicomputer garbage collector for a single-assignment language. Intl. J. Parallel Programming 18, 3, 181--203. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Francez, N. 1978. An application of a method for analysis of cyclic programs. ACM Trans. Softw. Eng. 4, 5 (Sept.), 371--377.Google ScholarGoogle Scholar
  19. Goguen, H., Brooksby, R., and Burstall, R. 1998. An abstract formulation of memory management. Available online from http://www.dcs.ed.ac.uk/~hhg/.Google ScholarGoogle Scholar
  20. Gonthier, G. 1996. Verifying the safety of a practical concurrent garbage collector. In Computer Aided Verification CAV'96, (New Brunswick, NJ.), R. Alur and T. Henzinger, Eds. Lecture Notes in Computer Science, vol. 1102. Springer-Verlag, Berlin, Germany. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Gries, D. 1977. An exercise in proving parallel programs correct. Commun. ACM 20, 12 (Dec.), 921--930. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Havelund, K. and Shankar, N. 1997. A mechanized refinement proof for a garbage collector. Available online from http://www.cs.auc.dk/~havelund/.Google ScholarGoogle Scholar
  23. Hirzel, M., Diwan, A., and Henkel, J. 2002. On the usefulness of type and liveness for garbage collection and leak detection. ACM Trans. Programm. Lang. Syst. 24, 6 (Nov.), 593--624. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Jackson, P. 1998. Verifying a garbage collection algorithm. In Proceedings of 11th International Conference on Theorem Proving in Higher Order Logics TPHOLs'98 (Canberra, Australia). Lecture Notes in Computer Science, vol. 1479. Springer-Verlag, Berlin, Germany, 225-- 244. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Jones, R. E. 1996. Garbage Collection: Algorithms for Automatic Dynamic Memory Management. Wiley, Chichester, U.K. With a chapter on Distributed Garbage Collection by R. Lins.Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Jones, R. E. and Lins, R. D. 1993. Cyclic weighted reference counting without delay. In PARLE'93 Parallel Architectures and Languages Europe, A. Bode, M. Reeve, and G. Wolf, Eds. Lecture Notes in Computer Science, vol. 694. Springer-Verlag, Munich, Germany, 712--515. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Jul, E., Levy, H., Hutchinson, N., and Black, A. 1988. Fine-grained mobility in the Emerald system. ACM Trans. Comput. Syst. 6, 1 (Jan.), 109--133. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Kung, H. T. and Song, S. W. 1977. An efficient parallel garbage collection system and its correctness proof. In Proceedings of the IEEE Symposium on Foundations of Computer Science. IEEE Press, Los Alamitos, CA, 120--131.Google ScholarGoogle Scholar
  29. Lamport, L. 1991. The temporal logic of actions. Research rep. 79. DEC Systems Research Center, Palo Alto, CA.Google ScholarGoogle Scholar
  30. Lang, B., Quenniac, C., and Piquer, J. 1992. Garbage collecting the world. In Proceedings of the Nineteenth ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (Albuquerque, NM). ACM Press, New York, NY, 39--50. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Le Fessant, F., Piumarta, I., and Shapiro, M. 1998. An implementation for complete asynchronous distributed garbage collection. In Proceedings of SIGPLAN'98 Conference on Programming Languages Design and Implementation (Montreal, P.Q., Canada). ACM SIGPLAN Not. 33, 5 (May), 152--161. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Lermen, C.-W. and Maurer, D. 1986. A protocol for distributed reference counting. In Proceedings of the 1986 ACM Conference on Lisp and Functional Programming (Cambridge, MA). ACM Press, New York, NY, 343--350. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Lins, R. D. and Jones, R. E. 1993. Cyclic weighted reference counting. In Procedings of WP & DP'93 Workshop on Parallel and Distributed Processing (Sofia, Bulgaria), K. Boyanov, Ed. North Holland, Amsterdam, The Netherlands, 369--382. Also published in 1991 under the same title as Computing Laboratory Tech. rep. 95, University of Kent, U.K.Google ScholarGoogle Scholar
  34. Maheshwari, U. and Liskov, B. 1997. Collecting cyclic distributed garbage by back tracing. In Proceedings of PODC'97 Principles of Distributed Computing (Santa Barbara, CA). ACM Press, New York, NY, 239--248. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Mancini, L. V. and Shrivastava, S. K. 1991. Fault-tolerant reference counting for garbage collection in distributed systems. Comput. J. 34, 6 (Dec.), 503--513. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Manna, Z. and Pnuelli, M. 1991. Temporal Logic or Reactive and Concurrent Systems: Specification. Springer, Berlin, Germany. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. Moreau, L. 2001a. Distributed directory service and message router for mobile agents. Sci. Comput. Programm. 39, 2--3, 249--272. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Moreau, L. 2001b. Tree rerooting in distributed garbage collection: Implementation and performance evaluation. Higher-Order Symbol. Computat. 14, 4 (Dec.), 357--386. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. Moreau, L. 2002. A Fault-tolerant directory service for mobile agents based on forwarding pointers. In Proceedings of the 17th ACM Symposium on Applied Computing (SAC'2002)---Track on Agents, Interactions, Mobility and Systems (Madrid, Spain). ACM Press, New York, NY, 93--100. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Moreau, L. and Duprat, J. 2001. A construction of distributed reference counting. Acta Informatica 37, 563--595. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. Müller, K. A. G. 1976. On the feasibility of concurrent garbage collection. Ph.D. dissertation, Tech. Hogeschool Delft, Delft, The Netherlands.Google ScholarGoogle Scholar
  42. Owicki, S. and Lamport, L. 1982. Proving liveness properties of concurrent programs. ACM Trans. Programm. Lang. Syst. 4, 3 (July), 455--495. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. Piquer, J. M. 1991. Indirect reference counting: A distributed garbage collection algorithm. In PARLE'91 Parallel Architectures and Languages Europe (Eindhoven, The Netherlands), E. H. L. Aarts et al., Eds. Lecture Notes in Computer Science, vol. 505. Springer-Verlag, Berlin, Germany. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. Pixley, C. 1988. An incremental garbage collection algorithm for multi-mutator systems. Distrib. Comput. 3, 1, 41--50.Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. Plainfossé, D. and Shapiro, M. 1995. A survey of distributed garbage collection techniques. In Proceedings of the International Workshop on Memory Management, H. Baker, Ed. Lecture Notes in Computer Science, vol. 986. Springer-Verlag, Berlin, Germany. Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. Ramesh, S. and Mehndiratta, S. L. 1983. The liveness property of on-the-fly garbage collector---a proof. Inform. Process. Lett. 17, 4 (Nov.), 189--195.Google ScholarGoogle ScholarCross RefCross Ref
  47. Rodrigues, H. C. C. D. and Jones, R. E. 1996. A cyclic distributed garbage collector for network objects. In Tenth International Workshop on Distributed Algorithms, WDAG'96 (Bologna, Italy), O. Babaoglu and K. Marzullo, Eds. Lecture Notes in Computer Science, vol. 1151. Springer-Verlag, Berlin, Germany, 123--140. Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. Rodrigues, H. C. C. D. and Jones, R. E. 1998. Cyclic distributed garbage collection with group merger. In Proceedings of 12th European Conference on Object-Oriented Programming, ECOOP98 (Brussels, Belgium), E. Jul, Ed. Lecture Notes in Computer Science, vol. 1445. Springer-Verlag, Berlin, Germany, 249--273. Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. Röjemo, N. and Runciman, C. 1996. Lag, drag, void, and use: Heap profiling and space-efficient compilation revisited. In Proceedings of the First International Conference on Functional Programming (Philadelphia, PA). ACM Press, New York, NY, 34--41. Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. Russinoff, D. M. 1994. A mechanically verified incremental garbage collector. Form. Asp. Comput. 6, 359--390.Google ScholarGoogle ScholarCross RefCross Ref
  51. Shaham, R., Kolodner, E., and Sagiv, M. 2003. Estimating the impact of liveness information on space consumption in Java. In ISMM'02 Proceedings of the Third International Symposium on Memory Management (Berlin, Germany), D. Detlefs, Ed. ACM SIGPLAN Not. 38, 2(Feb. supplement), 64--75. Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. Shapiro, M., Dickman, P., and Plainfossé, D. 1992a. Robust, distributed references and acyclic garbage collection. In Proceedings of the Symposium on Principles of Distributed Computing (Vancouver, B.C., Canada). ACM Press, New York, NY, 135--146. Superseded by Shapiro et al. {1992b}. Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. Shapiro, M., Dickman, P., and Plainfossé, D. 1992b. SSP chains: Robust, distributed references supporting acyclic garbage collection. Rapport de Recherche 1799. INRIA-Rocquencourt, France.Google ScholarGoogle Scholar
  54. Shapiro, M., Gruber, O., and Plainfossé, D. 1990. A garbage detection protocol for a realistic distributed object-support system. Rapport de Recherche 1320. Inria-Rocquencourt, Rocquencourt, France.Google ScholarGoogle Scholar
  55. Stenning, V. 1976. On-the-fly garbage collection. Unpublished notes, cited by Gries {1977}.Google ScholarGoogle Scholar
  56. Sun Microsystems. 1996. Java Remote Method Invocation Specification. Sun Microsystems. Available at http://java.sun.com/products/jdk/rmi/.Google ScholarGoogle Scholar
  57. Tel, G. and Mattern, F. 1993. The derivation of distributed termination detection algorithms from garbage collection schemes. ACM Trans. Program. Lang. Syst. 15, 1 (Jan.), 1--35. Google ScholarGoogle ScholarDigital LibraryDigital Library
  58. van de Snepscheut, J. 1987. Algorithms for on-the-fly garbage collection revisited. Inform. Process. Lett. 24, 4 (Mar.), 211--216. Google ScholarGoogle ScholarDigital LibraryDigital Library
  59. Watson, P. and Watson, I. 1987. An efficient garbage collection scheme for parallel computer architectures. See de Bakker et al. {1987}, 432--443. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Birrell's distributed reference listing revisited

Recommendations

Comments

Login options

Check if you have access through your login credentials or your institution to get full access on this article.

Sign in

Full Access

PDF Format

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader
About Cookies On This Site

We use cookies to ensure that we give you the best experience on our website.

Learn more

Got it!