ABSTRACT
We introduce an extension of mostly copying collection that uses page residency to determine when to relocate objects. Our collector promotes pages with high residency in place, avoiding unnecessary work and wasted space. It predicts the residency of each page, but when its predictions prove to be inaccurate, our collector reclaims unoccupied space by using it to satisfy allocation requests.Using residency allows our collector to dynamically balance the tradeoffs of copying and non-copying collection. Our technique requires less space than a pure copying collector and supports object pinning without otherwise sacrificing the ability to relocate objects.Unlike other hybrids, our collector does not depend on application-specific configuration and can quickly respond to changing application behavior. Our measurements show that our hybrid performs well under a variety of conditions; it prefers copying collection when there is ample heap space but falls back on non-copying collection when space becomes limited.
- D. F. Bacon, P. Cheng, and V. T. Rajan. Controlling fragmentation and space consumption in the metronome, a real-time garbage collector for java. In LCTES '03: Proceedings of the 2003 ACM SIGPLAN conference on Language, compiler, and tool for embedded systems, pages 81--92. ACM Press, 2003. Google ScholarDigital Library
- D. F. Bacon, P. Cheng, and V. T. Rajan. A real-time garbage collector with low overhead and consistent utilization. In Proceedings of the 30th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 285--298. ACM Press, 2003. Google ScholarDigital Library
- J. F. Bartlett. Compacting garbage collection with ambiguous roots. Technical Report 88/2, DEC Western Research Laboratory, February 1988.Google ScholarDigital Library
- J. F. Bartlett. A generational compacting garbage collector for C++. In ECOOP/OOPSLA Workshop on Garbage Collection in Object-Oriented Systems, Ottawa, Canada, 1990.Google Scholar
- S. M. Blackburn, S. Singhai, M. Hertz, K. S. McKinely, and J. E. B. Moss. Pretenuring for java. In Proceedings of the 16th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), pages 342--352. ACM Press, 2001. Google ScholarDigital Library
- G. E. Blelloch and P. Cheng. On bounding time and space for multiprocessor garbage collection. In Proceedings of the ACM SIGPLAN '99 Conference on Programming Language Design and Implementation PLDI, pages 104--117. ACM Press, 1999. Google ScholarDigital Library
- H.-J. Boehm and M. Weiser. Garbage collection in an uncooperative environment. Softw. Pract. Exper., 18(9):807--820, 1988. Google ScholarDigital Library
- R. A. Brooks. Trading data space for reduced time and code space in real-time garbage collection on stock hardware. In Proceedings of the 1984 ACM Symposium on LISP and functional programming, pages 256--262. ACM Press, 1984. Google ScholarDigital Library
- P. J. Caudill and A. Wirfs-Brock. A third generation smalltalk-80 implementation. In Conference proceedings on Object-oriented programming systems, languages and applications, pages 119--130. ACM Press, 1986. Google ScholarDigital Library
- M. Chakravarty et al. The Haskell 98 Foreign Function Interface 1.0. http://www.cse.unsw.edu.au/~Echak/haskell/ffi/. Last viewed April 14, 2005.Google Scholar
- C. J. Cheney. A nonrecursive list compacting algorithm. Commun. ACM, 13(11):677--678, 1970. Google ScholarDigital Library
- P. Cheng, R. Harper, and P. Lee. Generational stack collection and profile-driven pretenuring. In Proceedings of the ACM SIGPLAN 1998 Conference on Programming Language Design and Implementation (PLDI), pages 162--173. ACM Press, 1998. Google ScholarDigital Library
- W. D. Clinger and L. T. Hansen. Generational garbage collection and the radioactive decay model. In PLDI '97: Proceedings of the ACM SIGPLAN 1997 conference on Programming language design and implementation, pages 97--108. ACM Press, 1997. Google ScholarDigital Library
- D. Detlefs. GCOld: a benchmark to stress old-generation collection. http://www.experimentalstuff.com/Technologies/. Last viewed April 14, 2005.Google Scholar
- D. Detlefs, C. Flood, S. Heller, and T. Printezis. Garbage-first garbage collection. In ISMM '04: Proceedings of the 4th international symposium on Memory management, pages 37--48. ACM Press, 2004. Google ScholarDigital Library
- E. W. Dijkstra, L. Lamport, A. J. Martin, C. S. Scholten, and E. F. M. Steffens. On-the-fly garbage collection: an exercise in cooperation. Commun. ACM, 21(11):966--975, 1978. Google ScholarDigital Library
- R. R. Fenichel and J. C. Yochelson. A lisp garbage-collector for virtual-memory computer systems. Commun. ACM, 12(11):611--612, 1969. Google ScholarDigital Library
- B. Hayes. Using key object opportunism to collect old objects. In OOPSLA '91: Conference proceedings on Object-oriented programming systems, languages, and applications, pages 33--46. ACM Press, 1991. Google ScholarDigital Library
- A. Hejlsberg, S. Wiltamuth, and P. Golde. The C# Programming Language. Addison-Wesley, 2003. Google ScholarDigital Library
- R. Jones and R. Lins. Garbage Collection: Algorithms for Automatic Dynamic Memory Management. John Wiley & Sons, 1996. Google ScholarDigital Library
- B. Lang and F. Dupont. Incremental incrementally compacting garbage collection. In SIGPLAN '87: Papers of the Symposium on Interpreters and interpretive techniques, pages 253--263, New York, NY, USA, 1987. ACM Press. Google ScholarDigital Library
- H. Lieberman and C. Hewitt. A real-time garbage collector based on the lifetimes of objects. Communications of the ACM, 26(6):419--429, June 1983. Google ScholarDigital Library
- J. L. McCarthy. Recursive functions of symbolic expressions and their computation by machine, part i. Communications of the ACM, 3(4):184--195, 1960. Google ScholarDigital Library
- S. Nettles, J. O'Toole, and D. Pierce. Replication-based incremental copying collection. In Proceedings of the International Workshop on Memory Management, pages 357--364. Springer-Verlag, 1992. Google ScholarDigital Library
- N. Sachindran and J. E. B. Moss. Mark-copy: fast copying gc with less space overhead. In Proceedings of the 18th ACM SIGPLAN conference on Object-Oriented Programing, Systems, Languages, and Applications, pages 326--343. ACM Press, 2003. Google ScholarDigital Library
- F. Smith and G. Morrisett. Comparing mostly-copying and mark-sweep conservative collection. ACM SIG-PLAN Notices, 34(3):68--78, 1999. Google ScholarDigital Library
- Sun Microsystems, Inc. JNI - Java Native Interface. http://java.sun.com/j2se/1.4.1/docs/guide/jni/. Last viewed April 14, 2005.Google Scholar
- D. Ungar. Generation scavenging: A non-disruptive high performance storage reclamation algorithm. In Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments, pages 157--167. ACM Press, 1984. Google ScholarDigital Library
- D. Ungar and F. Jackson. Tenuring policies for generation-based storage reclamation. In Conference proceedings on Object-oriented programming systems, languages and applications, pages 1--17. ACM Press, 1988. Google ScholarDigital Library
Index Terms
- Using page residency to balance tradeoffs in tracing garbage collection
Recommendations
Improved replication-based incremental garbage collection for embedded systems
ISMM '10We have developed an incremental compacting garbage collector for embedded Java systems. The collector divides the heap into equal sized pages and uses the segregated free lists for fast allocation. Collectors that have such a heap layout have a problem ...
Immix: a mark-region garbage collector with space efficiency, fast collection, and mutator performance
PLDI '08: Proceedings of the 29th ACM SIGPLAN Conference on Programming Language Design and ImplementationProgrammers are increasingly choosing managed languages for modern applications, which tend to allocate many short-to-medium lived small objects. The garbage collector therefore directly determines program performance by making a classic space-time ...
Immix: a mark-region garbage collector with space efficiency, fast collection, and mutator performance
PLDI '08Programmers are increasingly choosing managed languages for modern applications, which tend to allocate many short-to-medium lived small objects. The garbage collector therefore directly determines program performance by making a classic space-time ...
Comments