Garbage Collection läuft ständig parallel zum Programm,
d.h. es werden immer nur kleinere Bereiche untersucht
dadurch ergeben sich Kohärenzprobleme (das Programm
ändert den Erreichbarkeitsgraphen, während der Garbage Collector
durch diesen traversiert)
Generational Algorithmen
hierbei wird davon ausgegangen, daß die Mehrzahl der
allokierten Objekte nur sehr kurz leben (und deshalb niemals kopiert werden
müssen)
andererseits überleben die restlichen Objekte meist
eine sehr lange Zeit
einfache Garbage Collector Algorithmen würden diese
Objekte immer wieder kopieren
generational GC´s unterteilen alle Heapobjekte in Gruppen
ähnlichen Alters (oder in Generationen), wobei die Speicherbereiche
der jüngeren Generationen öfter nach Garbage durchsucht werden
damit ergeben sich große Laufzeiteinsparungen (vor
allem kleinere Unterbrechungen des laufenden Programmes)
oftmals werden diese Algorithmen als Ersatz für die
schwer zu implementierenden, inkrementellen Algorithmen akzeptiert