Where have all the pointers gone?: A story of distributed pointer tracking

We present new algorithms for tracking pointers in distributed object systems where each node in the system has its own local storage and may communicate with other nodes only by passing messages. The problem is difficult because of asynchrony, implying lack of knowledge of global state, and lack of globally atomic operators on that state. The pointer tracking algoritms may be used as part of a garbage collector to identifiy when there are no pointers to an object from another node, in object migration protocols where one object is substituted by another object possibly located on a different node, and in persistent systems to identify persistent data. A discussion of the correctness of the algoritms is given.