Abstract
This paper describes a garbage collector designed around the use of permanent, private, thread-local nurseries and is principally oriented towards functional languages. We try to maximize the cache hit rate by having threads continually reuse their individual private nurseries. These private nurseries operate in such a way that they can be garbage collected independently of other threads, which creates low collection pause times. Objects which survive thread-local collections are moved to a mature generation that can be collected either concurrently or in a stop-the-world fashion. We describe several optimizations (including two dynamic control parameter adaptation schemes) related to garbage collecting the private nurseries and to our concurrent collector, some of which are made possible when the language provides mutability information. We tested our collector against six benchmarks and saw single-threaded performance improvements in the range of 5-74%. We also saw a 10x increase (for 24 processors) in scalability for one parallel benchmark that had previously been memory-bound.
- Intel VTune Performance Analyzer. Online http://www.intel.com/software/products/vtune/index.htm.Google Scholar
- Java HotSpot Virtual Machine Performance Enhancements JDK 7. Online http://download.java.net/jdk7/docs/technotes/guides/vm/performance-enhancements-7.html.Google Scholar
- A. W. Appel. Simple generational garbage collection and fast allocation, 1988.Google Scholar
- D. F. Bacon, C. R. Attanasio, H. B. Lee, V. Rajan, and S. Smith. Java without the coffee breaks: A nonintrusive multiprocessor garbage collector. In In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI) (Snowbird, pages 92--103. ACM Press, 2001. Google Scholar
Digital Library
- P. Cheng, R. Harper, and P. Lee. Generational stack collection and profile-driven pretenuring. In PLDI, pages 162--173, 1998. Google Scholar
Digital Library
- E. W. Dijkstra, L. Lamport, A. J. Martin, C. S. Sholten, and E. F. M. Steffens. On-the-fly garbage collection: an exercise in cooperation. In Communications of the ACM, pages 966--975, 1978. Google Scholar
Digital Library
- D. Doligez and G. Gonthier. Portable, unobtrusive garbage collection for multiprocessor systems. In POPL, pages 70--83, 1994. Google Scholar
Digital Library
- D. Doligez and X. Leroy. A concurrent, generational garbage collector for a multithreaded implementation of ML. In POPL, pages 113--123, 1993. Google Scholar
Digital Library
- T. Domani, G. Goldshtein, E. K. Kolodner, E. Lewis, E. Petrank, and D. Sheinwald. Thread-local heaps for Java. In ISMM '02: Proceedings of the 3rd international symposium on Memory management, pages 76--87, New York, NY, USA, 2002. ACM. Google Scholar
Digital Library
- T. Domani, E. K. Kolodner, and E. Petrank. A generational on-the-fly garbage collector for Java. SIGPLAN Not., 35(5):274--284, 2000. Google Scholar
Digital Library
- M. Fluet, N. Ford, M. Rainey, J. Reppy, A. Shaw, and Y. Xiao. Status report: the manticore project. In ML '07: Proceedings of the 2007 workshop on Workshop on ML, New York, NY, USA, 2007. Google Scholar
Digital Library
- X. Guan, W. Srisa-an, and C. Jia. Investigating the effects of using different nursery sizing policies on performance. In ISMM '09: Proceedings of the 2009 international symposium on Memory management, pages 59--68, New York, NY, USA, 2009. ACM. Google Scholar
Digital Library
- R. Hudson, J. Moss, A. Diwan, and C. Weight. A language-independent garbage collector toolkit. Technical Report UM-CS-1991-047, University of Massachusetts, 1991. Google Scholar
Digital Library
- R. Hudson, J. Moss, S. Subramoney, and W. Washburn. Cycles to recycle: garbage collection to the ia--64. In ISMM 2000, 2000. Google Scholar
Digital Library
- G. Kliot, E. Petrank, and B. Steensgaard. A lock-free, concurrent, and incremental stack scanning for garbage collectors. In VEE '09: Proceedings of the 2009 ACM SIGPLAN/SIGOPS international conference on Virtual execution environments, pages 11--20, New York, NY, USA, 2009. ACM. Google Scholar
Digital Library
- B. Steensgaard. Thread-specific heaps for multi-threaded programs. In ISMM, pages 18--24, 2000. Google Scholar
Digital Library
- J. M. Velasco, A. Ortiz, K. Olcoz, and F. Tirado. Dynamic management of nursery space organization in generational collection. Interaction between Compilers and Computer Architecture, Annual Workshop on, 0:33--40, 2004.Google Scholar
- T. Yang, E. Berger, M. Hertz, S. Kaplan, and J. Moss. Automatic heap sizing: Taking real memory into account, 2004.Google Scholar
- T. Yuasa, Y. Nakagawa, T. Komiya, and M. Yasugi. Return barrier. In International Lisp Conference, 2002.Google Scholar
Index Terms
Optimizations in a private nursery-based garbage collector
Recommendations
Optimizations in a private nursery-based garbage collector
ISMM '10: Proceedings of the 2010 international symposium on Memory managementThis paper describes a garbage collector designed around the use of permanent, private, thread-local nurseries and is principally oriented towards functional languages. We try to maximize the cache hit rate by having threads continually reuse their ...
A generational on-the-fly garbage collector for Java
PLDI '00: Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementationAn on-the-fly garbage collector does not stop the program threads to perform the collection. Instead, the collector executes in a separate thread (or process) in parallel to the program. On-the-fly collectors are useful for multi-threaded applications ...
An on-the-fly mark and sweep garbage collector based on sliding views
Special Issue: Proceedings of the OOPSLA '03 conferenceWith concurrent and garbage collected languages like Java and C# becoming popular, the need for a suitable non-intrusive, efficient, and concurrent multiprocessor garbage collector has become acute. We propose a novel mark and sweep on-the-fly algorithm ...







Comments