A technique for improving the efficiency of a loop detecting, reference
counting storage reclamation program in a computer system. A depth value
is maintained for data objects in a memory resource to indicate a
distance from a global, live data object. A reference count is also
maintained based on a number of objects pointing to each object. A
particular object is processed by the storage reclamation program when
another object that previously pointed to the particular object no longer
points to it, e.g., because the object was deleted or reset to point to
another object, and when the depth value of the another object is one
less than the depth value of the particular object. If the particular
object is determined to be live, its depth value, and the depth values of
other objects it points to or "roots" are reset. If the particular object
is dead, it is cleaned up.