This Article 
   
 Share 
   
 Bibliographic References 
   
 Add to: 
 
Digg
Furl
Spurl
Blink
Simpy
Google
Del.icio.us
Y!MyWeb
 
 Search 
   
Yama: A Scalable Generational Garbage Collector for Java in Multiprocessor Systems
February 2006 (vol. 17 no. 2)
pp. 148-159

Abstract—The current state-of-the-art generational garbage collector pauses all the program threads when it performs young and old generation garbage collection. As the number of program threads increases, the delay due to garbage collection also increases, thus restricting the scalability of the collector. In order to improve the scalability and reduce the pause time, an on-the-fly generational garbage collector called Yama is proposed for multiprocessor systems. This uses the on-the-fly deferred reference counting in the young generation and the DLG (Doligez Leroy Gonthier) on-the-fly mark and sweep garbage collector in the old generation. We have proposed and experimented with two novel variations of the on-the-fly deferred reference counting called Chitragupt1 and Chitragupt2 in the young generation. Yama does not pause all the application threads simultaneously. An adaptive tenuring policy based on object reference count and survival rate is also proposed. Yama has been implemented in the IBM Jikes RVM (Research Virtual Machine). The above claims are supported with experimental results for standard benchmark programs. The results show that Yama has an extremely low pause time in both the young and the old generation. The pause time reduction results in better response times for the user programs.

[1] J. Gosling, B. Joy, and G. Steele, The Java Language Specification. Addison-Wesley, 1996.
[2] R.E. Jones and R. Lins, Garbage Collection: Algorithms for Automatic Dynamic Memory Management. Wiley, July 1996.
[3] P.R. Wilson, “Uniprocessor Garbage Collection Techniques,” Lecture Notes in Computer Science, vol. 637, pp. 1-42, Sept. 1992.
[4] H. Lieberman and C.E. Hewitt, “A Real Time Garbage Collector Based on the Lifetimes of Objects,” Comm. ACM, vol. 26, no. 6, pp. 419-429, 1983.
[5] D. Ungar, “Generation Scavenging: A Non-Disruptive High Performance Storage Reclamation Algorithm,” ACM SIGPLAN Notices, vol. 19, no. 5, pp. 157-167, May 1984.
[6] D. Doligez and G. Gonthier, “Portable, Unobtrusive Garbage Collection for Multiprocessor Systems,” Principles of Programming Languages, pp. 70-83, ACM Press, Jan. 1994.
[7] D. Doligez and X. Leroy, “A Concurrent Generational Garbage Collector for a Multi-Threaded Implementation of ML,” Proc. Conf. Record of the 20th Ann. ACM Symp. Principles of Programming Languages, pp. 113-123, Jan. 1993.
[8] D. Bacon, C.R. Attanasio, H. Lee, V.T. Rajan, and S. Smith, “Java without the Coffee Breaks: A Nonintrusive Multiprocessor Garbage Collector,” Proc. ACM SIGPLAN '01 Conf. Programming Language Design and Implementation (PLDI-01), pp. 92-103, June 2001.
[9] Y. Levanoni and E. Petrank, “An On-the-fly Reference Counting Garbage Collector for Java,” ACM SIGPLAN Notices, vol. 36, no. 11, pp. 367-380, Nov. 2001.
[10] 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 Jalapeño Virtual Machine,” IBM Systems J., vol. 39, no. 1, pp. 211-238, Feb. 2000.
[11] B. Alpern, C.R. Attanasio, A. Cocchi, D. Lieber, S. Smith, T. Ngo, J.J. Barton, S. Flynn Hummel, J.C. Shepherd, and M. Mergen, “Implementing Jalapeño in Java,” Proc. OOPSLA '99 ACM Conf. Object-Oriented Systems, Languages, and Applications, pp. 314-324, Oct. 1999.
[12] T. Lindholm and F. Yell, The Java Virtual Machine Specification. Addison-Wesley, 1999.
[13] B. Venners, Inside the Java Virtual Machine. McGraw-Hill, 2000.
[14] Standard Performance Evaluation Corp., SPEC JVM98, http:/www.spec.org, 2006.
[15] Java Grande Forum, “The Java Grande Forum Benchmark Suite,” http://www.epcc.ed.ac.uk/javagrandeindex_1.html , 2006.
[16] G.E. Collins, “A Method for Overlapping and Erasure of Lists,” Comm. ACM, vol. 3, no. 12, pp. 655-657, Dec. 1960.
[17] L.P. Deutsch and D.G. Bobrow, “An Efficient, Incremental, Automatic Garbage Collector,” Comm. ACM, vol. 19, no. 9, pp. 522-526, Sept. 1976.
[18] J. DeTreville, “Experience with Concurrent Garbage Collectors for Modula-2+,” Technical Report 64, Digital Equipment Corp., Systems Research Centre, Nov. 1990.
[19] R.M. Muthukumar and D. Janakiram, “Yama: A Scalable Generational Garbage Collector for Java in Multiprocessor Systems,” Technical Report IITM-CSE-DOS-2004-14, Distributed and Object Systems Lab, Dept. of Computer Science and Eng., Indian Inst. of Technology Madras, India, 2004.
[20] Int'l Business Machines Corp., “Jikes Research Virtual Machine(RVM),” http://www-124.ibm.com/developerworks/oss jikesrvm/, 2006.
[21] T. Printezis and D. Detlefs, “A Generational Mostly-Concurrent Garbage Collector,” ISMM 2000 Proc. Second Int'l Symp. Memory Management, pp. 143-154, Oct. 2000.
[22] H.-J. Boehm, A.J. Demers, and S. Shenker, “Mostly Parallel Garbage Collection,” Proc. ACM SIGPLAN '91 Conf. Programming Language Design and Implementation, vol. 26, pp. 157-164, June 1991.
[23] T. Domani, E.K. Kolodner, and E. Petrank, “A Generational On-the-Fly Garbage Collector for Java,” Proc. ACM SIGPLAN 2000 Conf. Programming Language Design and Implementation (PLDI-00), pp. 274-284, June 2000.
[24] H. Azatchi and E. Petrank, “Integrating Generations with Advanced Reference Counting Garbage Collectors,” Proc. 12th Int'l Conf. Compiler Construction (CC '03), 2003.

Index Terms:
Garbage collection, memory management, Java, programming languages, Java virtual machine, on-the-fly garbage collection.
Citation:
R.M. Muthukumar, D. Janakiram, "Yama: A Scalable Generational Garbage Collector for Java in Multiprocessor Systems," IEEE Transactions on Parallel and Distributed Systems, vol. 17, no. 2, pp. 148-159, Feb. 2006, doi:10.1109/TPDS.2006.28
Usage of this product signifies your acceptance of the Terms of Use.