[gclist] Terminology question, "deferred reference counting"

Henry G. Baker hbaker@netcom.com
Thu, 2 May 1996 08:36:05 -0700 (PDT)


> This came up once before, but I managed to delete/forget the exact 
> conclusions.  There's two modifications to reference counting that
> I (recall, probably in error) seeing called "deferred reference counting".
> 
> 1. Don't adjust the reference count for updates arising from local-variable 
> operations, as long as it can be inferred that the RC is positive 
> when it should be positive.
> 
> 2. When freeing objects, instead of recursively decrementing and 
> freeing an entire data structure, queue/stack those objects with 
> reference count of zero and process the queue incrementally.
> 
> I suppose I could go dig up the Deutsch and Bobrow paper (I'm
> pretty sure that I have a copy) but I think that both techniques
> are mentioned in the same paper.  Which of these is called "deferred
> reference counting", and what's the other one called?

I didn't really give the Weizenbaum trick (#2, above) a name when I
referenced it in my RTGC (CACM 1978) paper, but I guess I would now
call this 'lazy' reference counting, since the reclaiming of the freed
space is put off, rather than being done promptly.

The Deutsch/Bobrow scheme (#1, above) of not bothering to count stack
references, and to then scan the stack, I would now call a
'combination' scheme in which the stack was _traced_, while the heap
was garbage-collected.  (Although probably independently developed,
Peter Bishop's memo & thesis also suggests such a thing, if I recall
correctly.)  I have also used an even more difficult-to-categorize
scheme in which the stack roots themselves are linked & unlinked using
C++ ctors/dtors, but this chain is then scanned by a tracer.

-- 
Henry Baker
www/ftp directory:
ftp.netcom.com:/pub/hb/hbaker/home.html