Portable, unobtrusive garbage collection for multiprocessor systems

We describe and prove the correctness of a new concurrent mark-and-sweep garbage collection algorithm. This algorithm derives from the classical on-the-fly algorithm from Dijkstra et al. [9]. A distinguishing feature of our algorithm is that it supports multiprocessor environments where the registers of running processes are not readily accessible, without imposing any overhead on the elementary operations of loading a register or reading or initializing a field. Furthermore our collector never blocks running mutator processes except possibly on requests for free memory; in particular, updating a field or creating or marking or sweeping a heap object does not involve system-dependent synchronization primitives such as locks. We also provide support for process creation and deletion, and for managing an extensible heap of variable-sized objects.

[1]  Philip Wadler,et al.  Analysis of an algorithm for real time garbage collection , 1976, CACM.

[2]  H. T. Kung,et al.  An efficient parallel garbage collection system and ITS correctness proof , 1977, 18th Annual Symposium on Foundations of Computer Science (sfcs 1977).

[3]  Leslie Lamport,et al.  On-the-fly garbage collection: an exercise in cooperation , 1975, CACM.

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

[5]  Yasushi Hibino A practical parallel garbage collection algorithm and its implementation , 1980, ISCA '80.

[6]  Mordechai Ben-Ari Algorithms for on-the-fly garbage collection , 1984, TOPL.

[7]  Jacques Cohen,et al.  Performance analysis of on-the-fly garbage collection , 1984, CACM.

[8]  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.

[9]  John H. Reppy,et al.  Concurrent garbage collection on stock hardware , 1987, FPCA.

[10]  Ian A. Newman,et al.  A Hybrid Multiple Processor Garbage Collection Algorithm , 1987, Comput. J..

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

[12]  K. Mani Chandy,et al.  Parallel program design - a foundation , 1988 .

[13]  K. Mani Chandy Parallel program design , 1989 .

[14]  Maurice Herlihy,et al.  Non-Blocking Garbage Collection for Multiprocessors , 1990 .

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

[16]  Andrew W. Appel,et al.  Compiling with Continuations , 1991 .

[17]  Scott Nettles,et al.  Replication-Based Incremental Copying Collection , 1992, IWMM.

[18]  Damien Doligez,et al.  A concurrent, generational garbage collector for a multithreaded implementation of ML , 1993, POPL '93.

[19]  Leslie Lamport,et al.  The temporal logic of actions , 1994, TOPL.