A Fully Concurrent Garbage Collector

Chapter

Abstract

Over the past two decades, the number of memory-managed programming languages has proliferated. Such languages use uniprocessormemorymanagement techniques to allocate and reclaim storage on behalf of programs. Multicores and other forms of multiprocessor systems have evolved to become common place. However, deployed memory management techniques largely have not taken advantage of the benefits ofmultiprocessor systems.We present a fully concurrent garbage collector that offers negligible synchronization cost and leverages the power, speed, and potential of multicores and other multiprocessor systems. This collector makes its best effort to avoid suspending application threads as many concurrent (and other on-the-fly) collectors do. Instead, it retrieves requisite data opportunistically from each thread to compute its view of the heap and perform garbage collection work. Our collector is an efficient, high performance garbage collector that yields features that are desirable for multiprocessor real-time systems.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Aho, A.V., Kernighan, B.W., Weinberger, P.J.: The AWK Programming Language. Addison-Wesley (1988)Google Scholar
  2. 2.
    Appel, A.W., Ellis, J.R., Li, K.: Real-time concurrent collection on stock multiprocessors. SIGPLAN Notices 23(7), 11–20 (1988)CrossRefGoogle Scholar
  3. 3.
    Azatchi, H., Levanoni, Y., Paz, H., Petrank, E.: An on-the-fly mark and sweep garbage collector based on sliding views. SIGPLAN Notices 38, 269–281 (2003)CrossRefGoogle Scholar
  4. 4.
    Bacon, D.F., Richard Attanasio, C., Lee, H., Rajan, V.T., Smith, S.: Java without the coffee breaks: A nonintrusive multiprocessor garbage collector. In: SIGPLAN Conference on Programming Language Design and Implementation, pp. 92–103 (2001)Google Scholar
  5. 5.
    Bacon, D.F., Rajan, V.T.: Concurrent Cycle Collection in Reference Counted Systems. In: Lee, S.H. (ed.) ECOOP 2001. LNCS, vol. 2072, pp. 207–235. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  6. 6.
    Collins, G.E.: A method for overlapping and erasure of lists. Communications of the ACM 3(12), 655–657 (1960)CrossRefGoogle Scholar
  7. 7.
    DeTreville, J.: Experience with concurrent garbage collectors for Modula-2+. Technical Report 64, Digital Equipment Corporation Systems Research Center (August 1990)Google Scholar
  8. 8.
    Peter Deutsch, L., Bobrow, D.G.: An efficient incremental automatic garbage collector. Communications of the ACM 19(9), 522–526 (1976)MATHCrossRefGoogle Scholar
  9. 9.
    Dieckmann, S., Hölzle, U.: A study of the Allocation Behavior of the SPECjvm98 Java Benchmarks. The MIT Press (2001)Google Scholar
  10. 10.
    Doligez, D., Leroy, X.: A concurrent generational garbage collector for a multi-threaded implementation of ML. In: Conference Record of the Twentieth Annual ACM Symposium on Principles of Programming Languages, SIGPLAN Notices, pp. 113–123. Association for Computing Machinery (1993)Google Scholar
  11. 11.
    Free Software Foundation. GCC, the GNU Compiler Collection - GNU Project - Free Software Foundation, FSF (2007), http://gcc.gnu.org/
  12. 12.
    Goldberg, A., Robson, D.: Smalltalk-80: the language and its implementation. Addison-Wesley Longman Publishing Co., Inc., Boston (1983)MATHGoogle Scholar
  13. 13.
    Hartel, P.H.: Performance Analysis of Storage Management in Combinator Graph Reduction. PhD thesis, Department of Computer Systems, University of Amsterdam, Amsterdam (1988)Google Scholar
  14. 14.
    Jones, R., Lins, R.: Garbage collection: algorithms for automatic dynamic memory management. John Wiley & Sons, Ltd. (1996)Google Scholar
  15. 15.
    Levanoni, Y., Petrank, E.: An on-the-fly reference counting garbage collector for Java. In: Proceedings of the 16th ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications, pp. 367–380. ACM Press (2001)Google Scholar
  16. 16.
    O’Toole, J.W., Nettles, S.M.: Concurrent replicating garbage collection. Technical Report MIT–LCS–TR–570 and CMU–CS–93–138, MIT and CMU (1993); Also LFP94 and OOPSLA93 Workshop on Memory Management and Garbage CollectionGoogle Scholar
  17. 17.
    Steele, G.L.: Multiprocessing compactifying garbage collection. Communications of the ACM 18(9), 495–508 (1975)MATHCrossRefGoogle Scholar
  18. 18.
    Wall, L., Schwartz, R.L.: Programming Perl. O’Reilly and Associates, Inc. (1991)Google Scholar

Copyright information

© Springer-Verlag GmbH Berlin Heidelberg 2012

Authors and Affiliations

  1. 1.Dept. of Computer Science and Software EngineeringRose-Hulman Institute of TechnologyTerre HauteUSA
  2. 2.Computer Science DepartmentNew York UniversityNew YorkUSA
  3. 3.Dept. of Computer Science and EngineeringWashington University in St. LouisSt. LouisUSA

Personalised recommendations