An Efficient, Incremental, Automatic Garbage Collector
This paper describes a new way of solving
the storage reclamation problem for a system such 
as Lisp that allocates storage automatically from a
heap, and does not require the programmer to give 
any indication that particular items are no longer useful
or accessible.  A reference count scheme for 
reclaiming non-self-referential structures, and a linearizing,
compacting, copying scheme to reorganize 
all storage at the users discretion are proposed.  The
algorithms are designed to work well in systems 
which use multiple levels of storage, and large virtual
address space.  They depend on the fact that 
most cells are referenced exactly once, and that reference
counts need only be accurate when storage 
is about to be reclaimed.  A transaction file stores changes
to reference counts, and a multiple reference 
table stores the count for items which are referenced more than once.
CACM September, 1976
Deutsch, L. P.
Bobrow, D. G.
