21/01/2004 02:12:09, Gordon Henriksen <[EMAIL PROTECTED]> wrote: > This is false. The mark phase will still need to run over the entire > process, else it cannot detect all references into the pool. >
If by reference, you mean address, then that is true. If when a reference is taken, the address of the referent is stored in arbitrary other data structures, then all memory be scanned by the GC, However, if references were not addresses, but an index into a table of addresses, then only the table need be scanned. When a reference, or the thing holding it, is deleted, then the indexed slot in the address table is blanked and subsequent GC passes looking for references to a referent will no longer find the reference in the table. With the addition of a reference count to the table, all references to a single entity can share the same index, but now I'm groping back in the direction of reference counting, which is not flavour of the month:) Nigel.