A “card-marking” scheme for controlling intergenerational references in generation-based garbage collection on stock hardware

Generation-based garbage collectors must detect references from older generations into younger ones in order to allow the independent scavenging of the younger generations [Lille83]. On stock hardware, the most efficient approach is to record which locations in older generations may hold pointers into younger generations as heap data are modified by the running program [Unga84]. At scavenge time, the remembered locations of older generations are checked to find any references to data in the generation(s) being scavenged. This ensures that any objects that are live because of pointers from older generations are found by the scavenging process.

[1]  Henry Lieberman,et al.  A real-time garbage collector based on the lifetimes of objects , 1983, CACM.

[2]  David L. Black,et al.  Machine-independent virtual memory management for paged uniprocessor and multiprocessor architectures , 1987, IEEE Trans. Computers.

[3]  David M. Ungar,et al.  Generation Scavenging: A non-disruptive high performance storage reclamation algorithm , 1984, SDE 1.

[4]  D. Bobrow,et al.  TENEX, a paged time sharing system for the PDP - 10 , 1972, CACM.

[5]  James W. Stamos,et al.  Static grouping of small objects to enhance performance of a paged virtual memory , 1984, TOCS.

[6]  Frank Jackson,et al.  Tenuring policies for generation-based storage reclamation , 1988, OOPSLA 1988.

[7]  Daniel G. Bobrow,et al.  Virtual Copies - At the Boundary Between Classes and Instances , 1986, OOPSLA.

[8]  Paul R. Wilson A simple bucket-brigade advancement mechanism for generation-bases garbage collection , 1989, SIGP.

[9]  Frank Jackson,et al.  Tenuring policies for generation-based storage reclamation , 1988, OOPSLA '88.

[10]  David A. Moon,et al.  Garbage collection in a large LISP system , 1984, LFP '84.

[11]  Patrick Sobalvarro,et al.  A Lifetime-based Garbage Collector for LISP Systems on General- Purpose Computers , 1988 .

[12]  Slocum Miller James,et al.  Multischeme : a parallel processing system based on MIT scheme , 1987 .

[13]  Paul R. Wilson Opportunistic garbage collection , 1988, SIGP.

[14]  Robert Allen Shaw,et al.  Empirical analysis of a LISP system , 1988 .

[15]  Jonathan M. Smith,et al.  Transparent concurrent execution of mutually exclusive alternatives , 1989, [1989] Proceedings. The 9th International Conference on Distributed Computing Systems.

[16]  Ricki Blau Paging on an object-oriented personal computer , 1983, SIGMETRICS '83.

[17]  Stuart I. Feldman,et al.  IGOR: a system for program debugging via reversible execution , 1988, PADD '88.

[18]  Allen Wirfs-Brock,et al.  A third generation Smalltalk-80 implementation , 1986, OOPSLA 1986.

[19]  Ricki Blau Paging on an object-oriented personal computer for Smalltalk , 1983, Perform. Evaluation.

[20]  Paul R. Wilson,et al.  Demonic memory for process histories , 1989, PLDI '89.