A copying garbage collector evacuates to a to space the objects in a from
space that are referred to by references, including references in
previously evacuated objects, that are located outside the from space. It
divides the to space into local-allocation buffers ("LABs"), and it
adopts one of these as a destination LAB, i.e., as the LAB into which it
places the objects that it evacuates. When a destination LAB becomes
full, the thread adopts a new LAB as its destination LAB. When a
destination LAB's contents fill it to some predetermined fill threshold,
that destination LAB becomes the source LAB, i.e., the LAB that the
collector scans for references to the collection-set objects. If a
previous source LAB's contents has not yet been completely scanned when
the collector thus adopts a new source LAB, the previous source LAB is
placed on a LAB stack. When no more references to unevacuated
collection-set objects remain in its current source LAB, the collector
then pops a LAB from its LAB stack on a last-in, first-out basis and
adopts that LAB as the source LAB.