Skip to main content

Atomic incremental garbage collection

  • Incremental
  • Conference paper
  • First Online:
Memory Management (IWMM 1992)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 637))

Included in the following conference series:

Abstract

A stable heap is storage that is managed automatically using garbage collection, manipulated using atomic transactions, and accessed using a uniform storage model. These features enhance reliability and simplify programming by preventing errors due to explicit deallocation, by masking failures and concurrency using transactions, and by eliminating the distinction between accessing temporary storage and permanent storage. Stable heap management is useful for programming languages for reliable distributed computing, programming languages with persistent storage, and objectoriented database systems.

Many applications that could benefit from a stable heap (e.g., computeraided design, computer-aided software engineering, and office information systems) require large amounts of storage, timely responses for transactions, and high availability. We present garbage collection and recovery algorithms for a stable heap implementation that meet these goals and are appropriate for stock hardware. The collector is incremental: it does not attempt to collect the whole heap at once. The collector is also atomic: it is coordinated with the recovery system to prevent problems when it moves and modifies objects. The time for recovery is independent of heap size, even if a failure occurs during garbage collection.

This paper reports on research done by the authors at the Laboratory for Computer Science, Massachusetts Institute of Technology, Cambridge, MA 02139.

The research was supported by the National Science Foundation under grant CCR-8716884, by the Defense Advanced Research Projects Agency (DARPA) under Contract N00014-89-J-1988, and by an equipment grant from Digital Equipment Corporation.

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

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. A. Albano, L. Cardelli, and R. Orsini. A Strongly Typed Interactive Conceptual Lan-guage. ACM Transactions on Database Systems, 10(2):230–260, June 1985.

    Article  Google Scholar 

  2. M. P. Atkinson, P. J. Bailey, K. J. Chisholm, P. W. Cockshott, and R. Morrison. An Approach to Persistent Programming. The Computer Journal, 26(4):360–365, 1983.

    Google Scholar 

  3. Henry Baker. List Processing in Real Time on a Serial Computer. Communications of the ACM, 21(4):280–294, April 1978.

    Article  Google Scholar 

  4. Philip A. Bernstein, Vassos Hadzilacos, and Nathan Goodman. Concurrency Control and Recovery in Database Systems. Addison-Wesley Publishing Company, Reading, Ma., 1987.

    Google Scholar 

  5. Peter B. Bishop. Computer Systems with a Very Large Address Space and Garbage Collection. Technical Report MIT/LCS/TR-178, Laboratory for Computer Science, MIT, Cambridge, Ma., May 1977.

    Google Scholar 

  6. Rodney A. Brooks. Trading Data Space for Reduced Time and Code Space in Real-Time Garbage Collection on Stock Hardware. In Proceedings 1984 ACM Symposium on Lisp and Functional Programming, pages 256–262, 1977.

    Google Scholar 

  7. Alfred Brown and John Rosenberg. Persistent Object Stores: An Implementation Technique. In Alan Dearle, Gail M. Shaw, and Stanley B. Zdonik, editors, Implementing Persistent Object Bases: Principles and Practice/ The Fourth International Workshop on Persistent Object Systems, pages 199–212. Morgan-Kaufmann Publishers, San Mateo, California, 1990.

    Google Scholar 

  8. M. Carey, D. DeWitt, J. Richardson, and E. Sheikta. Object and File Management in the EXODUS Extensible Database System. In Proceedings of the 12th International Conference on Very Large Databases, August 1986.

    Google Scholar 

  9. Robert Courts. Improving Locality of Reference in a Garbage-Collecting Memory Management System. Communications of the ACM, 31(9):1128–1138, September 1988.

    Google Scholar 

  10. David Detlefs, Maurice Herlihy, and Jeannette Wing. Inheritance of Synchronization and Recovery Properties in Avalon/C++. IEEE Computer, 21(12), December 1988.

    Google Scholar 

  11. David L. Detlefs. Concurrent, Atomic Garbage Collection. Technical Report CMU-CS-90-177, Department of Computer Science, Carnegie Mellon University, Pittsburgh, Pa., October 1990.

    Google Scholar 

  12. Edsger W. Dijkstra, Leslie Lamport, A. J. Martin, C. S. Scholten, and E. F. M. Steffens. On-the-Fly Garbage Collection: An Exercise in Cooperation. Communications of the ACM, 21(11):966–975, November 1978.

    Article  Google Scholar 

  13. John R. Ellis, Kai Li, and Andrew W. Appel. Real-time Concurrent Collection on Stock Multiprocessors. Technical Report 25, Systems Research Center, Digital Equipment Corporation, Palo Alto, Ca., February 1988.

    Google Scholar 

  14. D. Gawlick and D. Kinkade. Varieties of Concurrency Control in IMS/VS Fast Path. Database Engineering, 8(2):63–70, June 1985.

    Google Scholar 

  15. James N. Gray. Notes on Database Operating Systems. In R. Bayer, R. M. Graham, and G. Seegmuller, editors, Operating Systems-An Advanced Course, volume 60 of Lecture Notes in Computer Science, pages 393–481. Springer-Verlag, New York, 1978.

    Google Scholar 

  16. Theo Haerder and Andreas Reuter. Principles of Transaction-Oriented Database Recovery. ACM Computing Surveys, 15(4):287–317, December 1983.

    Article  Google Scholar 

  17. Maurice P. Herlihy and Jeannette M. Wing. Avalon: Language Support for Reliable Distributed Systems. In Proceedings of the Seventeenth International Symposium on Fault-Tolerant Computing, July 1987.

    Google Scholar 

  18. Elliot Kolodner, Barbara Liskov, and William Weihl. Atomic Garbage Collection: Managing a Stable Heap. In Proceedings of the 1989 ACM SIGMOD International Conference on the Management of Data, pages 15–25, June 1989.

    Google Scholar 

  19. Elliot K. Kolodner. Recovery Using Virtual Memory. Technical Report MIT/LCS/TR-404, Laboratory for Computer Science, MIT, Cambridge, Ma., July 1987.

    Google Scholar 

  20. Elliot K. Kolodner. Atomic Incremental Garbage Collection and Recovery for a Large Stable Heap. Technical Report MIT/LCS/TR-534, Laboratory for Computer Science, MIT, Cambridge, Ma., February 1992.

    Google Scholar 

  21. Butler. W. Lampson. Atomic Transactions, volume 105 of Lecture Notes in Computer Science, pages 246–265. Springer-Verlag, New York, 1981. This is a revised version of Lampson and Sturgis's unpublished Crash Recovery in a Distributed Data Storage System.

    Google Scholar 

  22. Henry Lieberman and Carl Hewitt. A Real-Time Garbage Collector Based on the Lifetimes of Objects. Communications of the ACM, 26(6):419–429, June 1983.

    Google Scholar 

  23. B. G. Lindsay, P. G. Selinger, C. Galtieri, J. N. Gray, R. A. Lorie, T. G. Price, F. Putzolu, I. L. Traiger, and B. W. Wade. Notes on Distributed Databases. Technical Report RJ2571, IBM Research Laboratory, San Jose, Ca., July 1979.

    Google Scholar 

  24. Barbara Liskov. Overview of the Argus Language and System. Programming Methodology Group Memo 40, Laboratory for Computer Science, MIT, Cambridge, Ma., February 1984.

    Google Scholar 

  25. Barbara Liskov, Paul Johnson, and Robert Scheifler. Implementation of Argus. In Proceedings of the Eleventh Symposium on Operating Systems Principles, November 1987.

    Google Scholar 

  26. David Maier, Jacob Stein, Allen Otis, and Alan Purdy. Development of an Object-Oriented DBMS. In Proceedings of the Object-Oriented Programming Systems, Languages and Applications, pages 472–482, November 1986.

    Google Scholar 

  27. C. Mohan, D. Haderle, B. Lindsay, H. Pirahesh, and P. Schwarz. A Transaction Recovery Method Supporting Fine-Granularity Locking and Partial Rollbacks Using Write-Ahead Logging. Technical Report RJ6649, IBM Almaden Research Center, San Jose, Ca., January 1989.

    Google Scholar 

  28. David Moon. Garbage Collection in a Large Lisp System. In Proc. of the 1984 Symposium on Lisp and Functional Programming, pages 235–246, 1984.

    Google Scholar 

  29. Brian Oki, Barbara Liskov, and Robert Scheifler. Reliable Object Storage to Support Atomic Actions. In Proceedings of the Tenth Symposium on Operating Systems Principles, pages 147–159, December 1985.

    Google Scholar 

  30. Richard F. Rashid. Threads of a New System. Unix Review, 4(8):37–49, August 1986.

    Google Scholar 

  31. Mark Reinhold. Personal communication.

    Google Scholar 

  32. Alfred Z. Spector, J. J. Bloch, Dean S. Daniels, R. P. Draves, Daniel Duchamp, Jeffrey L. Eppinger, S. G. Menees, and D. S. Thompson. The Camelot Project. Database Engineering, 9(4), December 1986.

    Google Scholar 

  33. Satish M. Thatte. Persistent Memory: A Storage Architecture for Object-Oriented Database Systems. In U. Dayal and K. Dittrich, editors, Proceedings of the International Workshop on Object-Oriented Databases, Pacific Grove, CA, September 1986.

    Google Scholar 

  34. David Ungar. Generation Scavenging: A Non-disruptive High Performance Storage Reclamation Algorithm. In ACM SIGSOFT/SIGPLAN Practical Programming Environments Conference, pages 157–167, April 1984.

    Google Scholar 

  35. William Weihl and Barbara Liskov. Implementation of Resilient, Atomic Data Types. ACM Transactions on Programming Languages and Systems, 7(2):244–269, April 1985.

    Article  Google Scholar 

  36. Gerhard Weikum. A Theoretical Foundation of Multi-Level Concurrency Control. In Proceedings of the Fifth ACM SIGACT-SIGMOD Symposium on the Principles of Database Systems, pages 31–42, Cambridge, Ma., March 1986.

    Google Scholar 

  37. Gerhard Weikum. Principles and Realization Strategies of Multilevel Transaction Management. ACM Transactions on Database Systems, 16(1), 1991.

    Google Scholar 

  38. Daniel Weinreb, Neal Feinberg, Dan Gerson, and Charles Lamb. An Object-Oriented Database System to Support an Integrated Programming Environment. Submitted for publication, 1988.

    Google Scholar 

  39. Paul R. Wilson, Michael S. Lam, and Thomas G. Moher. Effective “Static-graph” Reorganization to Improve Locality in Garbage-Collected Systems. In Proceedings of the ACM SIGPLAN '91 Conference on Programming Language Design and Implementation, pages 177–191, June 1991.

    Google Scholar 

  40. Stanley Zdonik and Peter Wegner. Language and methodology for object-oriented database environments. In Proceedings of the 19th Annual Hawaiian Conference on Systems Science, January 1986.

    Google Scholar 

  41. Benjamin G. Zorn. Comparative Performance Evaluation of Garbage Collection Algorithms. Technical Report UCB/CSD 89/544, Computer Science Division (EECS), University of California, Berkeley, California, December 1989.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Yves Bekkers Jacques Cohen

Rights and permissions

Reprints and permissions

Copyright information

© 1992 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Kolodner, E.K., Weihl, W.E. (1992). Atomic incremental garbage collection. In: Bekkers, Y., Cohen, J. (eds) Memory Management. IWMM 1992. Lecture Notes in Computer Science, vol 637. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0017202

Download citation

  • DOI: https://doi.org/10.1007/BFb0017202

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-55940-5

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

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics