Packer: Parallel Garbage Collection Based on Virtual Spaces

The fundamental challenge of garbage collector (GC) design is to maximize the recycled space with minimal time overhead. For efficient memory management, in many GC designs the heap is divided into large object space (LOS) and normal object space (non-LOS). When either space is full, garbage collection is triggered even though the other space may still have plenty of room, thus leading to inefficient space utilization. Also, space partitioning in existing GC designs implies different GC algorithms for different spaces. This not only prolongs the pause time of garbage collection, but also makes collection inefficient on multiple spaces. To address these problems, we propose Packer, a parallel garbage collection algorithm based on the novel concept of virtual spaces. Instead of physically dividing the heap into multiple spaces, Packer manages multiple virtual spaces in one physical space. With multiple virtual spaces, Packer offers efficient memory management. With one physical space, Packer avoids the problem of an inefficient space utilization. To reduce the garbage collection pause time, we also propose a novel parallelization method that is applicable to multiple virtual spaces. Specifically, we reduce the compacting GC parallelization problem into a discreted acyclic graph (DAG) traversal parallelization problem, and apply it to both normal and large object compaction.

[1]  Guy E. Blelloch,et al.  A parallel, real-time garbage collector , 2001, PLDI '01.

[2]  Chris J. Cheney A nonrecursive list compacting algorithm , 1970, Commun. ACM.

[3]  Chandra Krintz,et al.  The mapping collector: virtual memory support for generational, parallel, and concurrent compaction , 2008, ASPLOS.

[4]  Dennis Kafura,et al.  Real-Time Garbage Collection of Actors , 1990 .

[5]  Andrew W. Appel,et al.  Simple generational garbage collection and fast allocation , 1989, Softw. Pract. Exp..

[6]  Andreas Paepcke,et al.  Conference proceedings on Object-oriented programming systems, languages, and applications , 1991, Conference on Object-Oriented Programming Systems, Languages, and Applications.

[7]  Rodney A. Brooks,et al.  Trading data space for reduced time and code space in real-time garbage collection on stock hardware , 1984, LFP '84.

[8]  Andrew W. Appel,et al.  RETROSPECTIVE : Real-time Concurrent Collection on Stock Multiprocessors , 2004 .

[9]  Rafael Dueire Lins,et al.  Garbage collection: algorithms for automatic dynamic memory management , 1996 .

[10]  Scott Shenker,et al.  Mostly parallel garbage collection , 1991, PLDI '91.

[11]  Erez Petrank,et al.  An efficient parallel heap compaction algorithm , 2004, OOPSLA.

[12]  Daniel G. Bobrow,et al.  Combining generational and conservative garbage collection: framework and implementations , 1989, POPL '90.

[13]  Scott Nettles,et al.  A study of large object spaces , 1998, ISMM '98.

[14]  Xiao-Feng Li,et al.  Task-pushing: a Scalable Parallel GC Marking Algorithm without Synchronization Operations , 2007, 2007 IEEE International Parallel and Distributed Processing Symposium.

[15]  Robert H. Halstead,et al.  MULTILISP: a language for concurrent symbolic computation , 1985, TOPL.

[16]  Erez Petrank,et al.  The Compressor: concurrent, incremental, and parallel compaction , 2006, PLDI '06.

[17]  Allen Wirfs-Brock,et al.  A Third Generation Smalltalk-80 Implementation , 1986, OOPSLA.

[18]  Robert Fenichel,et al.  A LISP garbage-collector for virtual-memory computer systems , 1969, CACM.

[19]  Robert H. Halstead,et al.  Implementation of multilisp: Lisp on a multiprocessor , 1984, LFP '84.

[20]  Chandra Krintz,et al.  Dynamic selection of application-specific garbage collectors , 2004, ISMM '04.

[21]  Nir Shavit,et al.  Parallel Garbage Collection for Shared Memory Multiprocessors , 2001, Java Virtual Machine Research and Technology Symposium.

[22]  Kiyokuni Kawachiya,et al.  Distributed garbage collection for managed X10 , 2012, X10 '12.

[23]  Henry G. Baker,et al.  List processing in real time on a serial computer , 1978, CACM.

[24]  Akinori Yonezawa,et al.  A Scalable Mark-Sweep Garbage Collector on Large-Scale Shared-Memory Machines , 1997, SC.

[25]  J. Eliot B. Moss,et al.  Incremental Collection of Mature Objects , 1992, IWMM.

[26]  Bjarne Steensgaard,et al.  Thread-specific heaps for multi-threaded programs , 2000, ISMM '00.

[27]  Benjamin G. Zorn,et al.  Garbage collection using a dynamic threatening boundary , 1995, PLDI '95.