Atomic incremental garbage collection

  • Elliot K. Kolodner
  • William E. Weihl
Part of the Lecture Notes in Computer Science book series (LNCS, volume 637)


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.


database distributed systems garbage collection object-oriented persistence recovery transactions 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 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.CrossRefGoogle Scholar
  2. 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. 3.
    Henry Baker. List Processing in Real Time on a Serial Computer. Communications of the ACM, 21(4):280–294, April 1978.CrossRefGoogle Scholar
  4. 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. 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. 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. 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. 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. 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. 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. 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. 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.CrossRefGoogle Scholar
  13. 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. 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. 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. 16.
    Theo Haerder and Andreas Reuter. Principles of Transaction-Oriented Database Recovery. ACM Computing Surveys, 15(4):287–317, December 1983.CrossRefGoogle Scholar
  17. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 30.
    Richard F. Rashid. Threads of a New System. Unix Review, 4(8):37–49, August 1986.Google Scholar
  31. 31.
    Mark Reinhold. Personal communication.Google Scholar
  32. 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. 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. 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. 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.CrossRefGoogle Scholar
  36. 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. 37.
    Gerhard Weikum. Principles and Realization Strategies of Multilevel Transaction Management. ACM Transactions on Database Systems, 16(1), 1991.Google Scholar
  38. 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. 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. 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. 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

Copyright information

© Springer-Verlag Berlin Heidelberg 1992

Authors and Affiliations

  • Elliot K. Kolodner
    • 1
  • William E. Weihl
    • 2
  1. 1.IBM Science and TechnologyTechnion City, HaifaIsrael
  2. 2.MIT Lab. for Computer ScienceCambridgeUSA

Personalised recommendations