| |
17
schrieben, die ebenfalls auf einem generationalen2 GC-Ansatz aufbauen und auch für
ML-Implementierungen entworfen wurden.
3.2.5
Bakers Treadmill Collector
Als Abschlussbeispiel zur parallelen GC wird ein weiterer Ansatz von Baker [Ba92]
vorgestellt, der allerdings nicht zu den Copying Collector-Verfahren gehört. Ähnlich
wie bei seinem Copying Collector teilt Baker den Speicher für die GC in vier Bereiche
auf, wobei jedem Bereich eine eigene Farbe zugewiesen werden kann: bereits abschlie-
ßend untersuc hte Objekte (schwarz), zwar erreichte, aber noch nicht analysierte Objekte
(grau), nicht erreichte Objekte (weiß) und freie Speicherbereiche (weiß gepunktet)
[Jo96]. Statt in Semi-Spaces werden Objekte in einer zyklischen doppelt-verketteten
Liste arrangiert, die Baker Treadmill (Tretmühle) genannt hat (siehe Abb. 4).
Abb. 4: Bakers Treadmill (Tretmühle)
Die vier Bereiche werden durch die Zeiger free, scan, T und B abgetrennt, wie in
Abb. 4 zu sehen ist. Die Allokation neuer Objekte erfolgt im Uhrzeigersinn, während
der Scanvorgang des Collectors entgegengesetzt fortschreitet. Nachdem eine graue Zelle
gescannt worden ist, wird sie schwarz gefärbt, indem der scan-Zeiger auf die nächste
Zelle gesetzt wird. Da zum Umfärben von grau auf schwarz keine Farb-Bits verändert
werden müssen, ist bloß ein Farb-Bit pro Zelle nötig, das angibt, ob die Zelle weiß ist
2
Generationale GC-Algorithmen nutzen meist die Eigenschaft aus, dass die meisten Objekte sehr kurz
leben und ein kleiner Anteil an Objekten viel länger. Durch Aufteilung der Objektmenge in Genera-
tionen lassen sich diese auch beim GC unterschiedlich behandeln. Eine Einführung zu generationa-
len GC-Algorithmen geben beispielsweise Jones und Lins [Kap. 7, Jo96] und Wilson [Wi94].
Fromspace
Tospace
New
Free
Scanvorgang
Allokation
Quelle: basiert auf [S.219, Jo96]
T
scan
free
B
|  |
|
| |
|
|