Abstract: A garbage collector operates in increments in which it collects a collection set consisting of one or more segments of a dynamically allocated heap. For each of those segments it maintains a remembered set of locations in which it has previously found references to objects in that associated segment. Each remembered set is stored in a plurality of remembered-set structures, each of which is associated with a separate one of a corresponding plurality of “stripes” into which at least a portion of the heap is divided. The garbage collector executes its remembered-set-updating operations in a plurality of concurrently executing threads, each of which claims exclusive access to a subset of the constituent remembered-set structures. By restricting its access only to that subset of the remembered-set structures that it has claimed, an individual thread is able to perform its portion of the updating operation without the need for synchronization with other threads.