A garbage collector that divides a dynamically allocated heap into car
sections grouped into trains in accordance with the train algorithm
subdivides large trains into subtrains. When an object that is reachable
from the train-algorithm-managed generation of the heap is evacuated from
a car being collected during a collection increment, it is placed into
the last car in the subtrain in which the reference to it resides, even
if that car is not the last car in the train to which the reference's
subtrain belongs. The train-algorithm test for dead trains is performed
not only on top-level trains but also on sub-trains.