This paper discusses garbage collection techniques used in a high-performance Lisp implementation with a large virtual memory, the Symbolics 3600. Particular attention is paid to practical issues and experience. In a large system problems of scale appear and the most straightforward garbage-collection techniques do not work well. Many of these problems involve the interaction of the garbage collector with demand-paged virtual memory. Some of the solutions adopted in the 3600 are presented, including incremental copying garbage collection, approximately depth-first copying, ephemeral objects, tagged architecture, and hardware assists. We discuss techniques for improving the efficiency of garbage collection by recognizing that objects in the Lisp world have a variety of lifetimes. The importance of designing the architecture and the hardware to facilitate garbage collection is stressed.
[1]
S. L. Graham,et al.
List Processing in Real Time on a Serial Computer
,
1978
.
[2]
Daniel G. Bobrow,et al.
An efficient, incremental, automatic garbage collector
,
1976,
CACM.
[3]
Henry Lieberman,et al.
A real-time garbage collector based on the lifetimes of objects
,
1983,
CACM.
[4]
Chris J. Cheney.
A nonrecursive list compacting algorithm
,
1970,
Commun. ACM.
[5]
David M. Ungar,et al.
Generation Scavenging: A non-disruptive high performance storage reclamation algorithm
,
1984,
SDE 1.