ABSTRACT
Modern garbage collectors partition the set of heap objects to achieve the best performance. For example, generational garbage collectors partition objects by age and focus their efforts on the youngest objects. Partitioning by age works well for many programs because younger objects usually have short lifetimes and thus garbage collection of young objects is often able to free up many objects. However, generational garbage collectors are typically much less efficient for longer-lived objects, and thus prior work has proposed many enhancements to generational collection.Our work explores whether the connectivity of objects can yield useful partitions or improve existing partitioning schemes. We look at both direct (e.g., object A points to object B) and transitive (e.g., object A is reachable from object B) connectivity. Our results indicate that connectivity correlates strongly with object lifetimes and deathtimes and is therefore likely to be useful for partitioning objects.
- B. Alpern, C. R. Attanasio, J. J. Barton, M. G. Burke, P. Cheng, J.-D. Choi, A. Cocchi, S. J. Fink, D. Grove, M. Hind, S. F. Hummel, D. Lieber, V. Litvinov, M. F. Mergen, T. Ngo, J. R. Russell, V. Sarkar, M. J. Serrano, J. C. Shepherd, S. E. Smith, V. C. Sreedhar, H. Srinivasan, and J. Whaley. The Jalapeno virtual machine. IBM Systems Journal, 39(1), 2000]] Google ScholarDigital Library
- B. Alpern, C. R. Attanasio, J. J. Barton, A. Cocchi, S. F. Hummel, D. Lieber, T. Ngo, M. Mergen, J. C. Shepherd, and S. Smith. Implementing Jalapeno in Java. In Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), 1999]] Google ScholarDigital Library
- H. G. Baker, Jr. The Treadmill: Real-time garbage collection without motion sickness. In OOPSLA '91 Workshop on Garbage Collection in Object-Oriented Systems, 1991. Also appeared in SIGPLAN Notices, March 1992]] Google ScholarDigital Library
- S. Blackburn, S. Singhai, M. Hertz, K. S. McKinley, and J. E. B. Moss. Pretenuring for Java. In Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), 2001]] Google ScholarDigital Library
- H. Boehm, A. Demers, and M. Weiser. A garbage collector for C and C++. http://www.hpl.hp.com/personal/Hans_Boehm/gc/]]Google Scholar
- M. Burke, J.-D. Choi, S. Fink, D. Grove, M. Hind, V. Sarkar, M. Serrano, V. C. Sreedhar, and H. Srinivasan. The Jalapeno dynamic optimizing compiler for Java. In ACM Java Grande Conference, San Francisco, CA, June 1999]] Google ScholarDigital Library
- B. Cahoon. Java-Olden benchmarks. http://www-ali.cs.umass.edu/~cahoon/olden]]Google Scholar
- D. Cannarozzi, M. Plezbert, and R. Cytron. Contaminated garbage collection. In Programming Languages Design and Implementation (PLDI), 2000]] Google ScholarDigital Library
- C. J. Cheney. A non-recursive list compaction algorithm. Communications of the ACM (CACM), November 1970]] Google ScholarDigital Library
- P. Cheng, R. Harper, and P. Lee. Generational stack collection and profile-driven pretenuring. In Programming Languages Design and Implementation (PLDI), 1998]] Google ScholarDigital Library
- T. Chilimbi and J. Larus. Using generational garbage collection to implement cache-conscious data placement. In International Symposium on Memory Management (ISMM), 1998]] Google ScholarDigital Library
- J.-D. Choi, M. Gupta, M. Serrano, V. C. Sreedhar, and S. Midkiff. Escape analysis for Java. In Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), 1999]] Google ScholarDigital Library
- T. Cormen, C. Leiserson, and R. Rivest. Introduction to Algorithms. MIT press, 1990]] Google ScholarDigital Library
- S. Dieckmann and U. Holzle. A study of allocation behavior of the SPECjvm98 Java benchmarks. In European Conference for Object-Oriented Programming (ECOOP), 1999]] Google ScholarDigital Library
- J. Dolby and A. Chien. An automatic object inlining optimization and its evaluation. In Programming Languages Design and Implementation (PLDI), 2000]] Google ScholarDigital Library
- R. Fitzgerald and D. Tarditi. The case for profile-directed selection of garbage collectors. In International Symposium on Memory Management (ISMM), 2000]] Google ScholarDigital Library
- D. Gay and A. Aiken. Memory management with explicit regions. In Programming Languages Design and Implementation (PLDI), 1998]] Google ScholarDigital Library
- D. Gay and B. Steensgaard. Fast escape analysis and stack allocation for object-based programs. In Compiler Construction (CC), 2000]] Google ScholarDigital Library
- T. Harris. Early storage reclamation in a tracing garbage collector. ACM SIGPLAN Notices, April 1999]] Google ScholarDigital Library
- T. Harris. Dynamic adaptive pre-tenuring. In International Symposium on Memory Management (ISMM), 2000]] Google ScholarDigital Library
- B. Hayes. Using key object opportunism to collect old objects. In Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), 1991]] Google ScholarDigital Library
- M. Hertz, S. M. Blackburn, J. E. B. Moss, K. S. McKinley, and D. Stefanovic. Error-free garbage collection traces: How to cheat and not get caught. In ACM SIGMETRICS, 2002]] Google ScholarDigital Library
- M. Hirzel, A. Diwan, and A. Hosking. On the usefulness of liveness for garbage collection and leak detection. In European Conference for Object-Oriented Programming (ECOOP), 2001]] Google ScholarDigital Library
- R. Hudson and E. Moss. Incremental collection of mature objects. In International Workshop on Memory Management, St. Malo, France, September 1992]] Google ScholarDigital Library
- R. Jones and R. Lins. Garbage collection: Algorithms for automatic dynamic memory management. John Wiley & Son Ltd., 1996]] Google ScholarDigital Library
- H. Lieberman and C. Hewitt. A real-time garbage collector based on the lifetime of objects. Communications of the ACM (CACM), 1983]] Google ScholarDigital Library
- D. Moon. Garbage collection in a large Lisp system. In Lisp and functional programming, 1984]] Google ScholarDigital Library
- E. Ruf. Effective synchronization removal for Java. In Programming Languages Design and Implementation (PLDI), 2000]] Google ScholarDigital Library
- M. Seidl and B. Zorn. Segregating heap objects by reference behavior and lifetime. In Architectural Support for Programming Languages and Operating Systems (ASPLOS), 1998]] Google ScholarDigital Library
- Y. Shuf, M. Gupta, R. Bordawekar, and J. P. Singh. Exploiting prolific types for memory management and optimizations. In Principles of Programming Languages (POPL), 2002]] Google ScholarDigital Library
- Y. Shuf, M. J. Serrano, M. Gupta, and J. P. Singh. Characterizing the memory behavior of Java workloads: A structured view and opportunities for optimizations. In SIGMETRICS, 2001]] Google ScholarDigital Library
- Standard Performance Evaluation Corporation (SPEC). SPECjvm98 benchmarks. http://www.specbench.org/osg/jvm98]]Google Scholar
- B. Steensgaard. Thread-specific heaps for multi-threaded programs. In International Symposium on Memory Management (ISMM), 2000]] Google ScholarDigital Library
- D. Stefanovic, K. McKinley, and E. Moss. Age-based garbage collection. In Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), 1999]] Google ScholarDigital Library
- D. Stefanovic and E. Moss. Characterization of object behaviour in Standard ML of New Jersey. In Lisp and functional programming, 1994]] Google ScholarDigital Library
- A. Svalcianu and M. Rinard. Pointer and escape analysis for multithreaded programs. In Principles and Practice of Parallel Programming (PPOPP), 2001]] Google ScholarDigital Library
- D. Tarditi and A. Diwan. Measuring the cost of storage management. Lisp and symbolic computation, 1996]] Google ScholarDigital Library
- M. Tofte. A brief introduction to regions. In International Symposium on Memory Management (ISMM), 1998]] Google ScholarDigital Library
- D. Ungar. Generation scavenging: A non-disruptive high performance storage reclamation algorithm. In Practical Software Development Environments, 1984]] Google ScholarDigital Library
- D. Ungar and F. Jackson. An adaptive tenuring policy for generation scavengers. Transactions on Programming Languages and Systems (TOPLAS), 1992]] Google ScholarDigital Library
- F. Vivien and M. Rinard. Incrementalized pointer and escape analysis. In Programming Languages Design and Implementation (PLDI), 2001]] Google ScholarDigital Library
- P. Wilson. Uniprocessor garbage collection techniques. Accepted for publication in ACM Computing Surveys]]Google Scholar
- P. R. Wilson, M. S. Lam, and T. G. Moher. Effective "static-graph" reorganization to improve locality in garbage collected systems. In Programming Languages Design and Implementation (PLDI), pages 177--191, Toronto, Canada, 1991]] Google ScholarDigital Library
Index Terms
- Understanding the connectivity of heap objects
Recommendations
Connectivity-based garbage collection
Special Issue: Proceedings of the OOPSLA '03 conferenceWe introduce a new family of connectivity-based garbage collectors (Cbgc) that are based on potential object-connectivity properties. The key feature of these collectors is that the placement of objects into partitions is determined by performing one of ...
Understanding the connectivity of heap objects
MSP 2002 and ISMM 2002Modern garbage collectors partition the set of heap objects to achieve the best performance. For example, generational garbage collectors partition objects by age and focus their efforts on the youngest objects. Partitioning by age works well for many ...
Connectivity-based garbage collection
OOPSLA '03: Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applicationsWe introduce a new family of connectivity-based garbage collectors (Cbgc) that are based on potential object-connectivity properties. The key feature of these collectors is that the placement of objects into partitions is determined by performing one of ...
Comments