[comp.lang.c++] reference counting vs. GC again

ttwang@polyslo.CalPoly.EDU (Thomas Wang) (09/03/89)

I have received several letters saying garbage collection is indeed
superior to reference counting.

I am still reading "Object-oriented Software Construction".  I just found
another issue dealing with reference counting versus garbage collection.

On page 88, there is an example:
-- Assume that here b is not void and b.x is true
a := b; -- a now points to b's object
a.set_x_false
-- Then here b.x is false

One solution to this problem is for function set_x_false() to know if
'a' is the sole user of the object.  If the object is shared by more than
one reference, then 'a' must be assigned a clone object first.  This
solution requires set_x_false() to know the reference count.  If we must
maintain a reference count in the first place, why not use reference counting
for this class?

In any case, the reference count can be put into good use even in a
garbage collection system.  We can give an object with high reference count
a longer grace period (I.E. make it a tenured object for a while).

I hope C++ can have an automatic memory management system, but I am not
holding my breath.

 -Thomas Wang ("Ole wa onna da!!!"
                  - from Urusei Yatsura)

                                                     ttwang@polyslo.calpoly.edu

jima@hplsla.HP.COM (Jim Adcock) (09/05/89)

> I hope C++ can have an automatic memory management system, but I am not
> holding my breath.

This was addressed a month or two back, with the conclusion that under 2.0
it is relatively easy to add GC to C++, and people have done so.  
Not to imply I believe GC is uniformly the answer over ref counting.  
I believe each has its place.  Better yet if one can write classes that need
neither.