An electromagnetic signal representing sequences of instructions that, when executed by a computer system, cause the computer system to implement in a plurality of execution threads a copying garbage collector that collects by evacuating to a to space from a from space at least any objects in the from space that are reachable from the to space and reclaiming the from space for re-use, wherein:
- A) each thread maintains at least one linked list, associated therewith, of evacuated objects containing references to potentially unevacuated objects by writing, in locations in the from space from which that thread has evacuated objects that contained such references, links to other such locations;
- B) each thread processes objects in the list associated therewith by:
- i) scanning those objects for references to objects in the from space that have not been evacuated;
- ii) if such a reference exists in an object in that list, evacuating the object to which it refers;
- and
- iii) if no such reference exists in a given object in that list, removing the given object from that list;
- and
- C) at least one of the threads:
- i) scans for references to objects in the from space that have not been evacuated at least one object in the list associated with another of the threads;
- and
- ii) if such a reference exists, evacuates the object to which it refers.