| |
16
Read-Barrier eingesetzt, die statt mit einzelnen Objekten mit ganzen Speicherseiten
(Pages) arbeitet und den Mutator auch nur auf schwarze Objekte zugreifen lässt [Jo96].
Immer wenn ein Zugriff auf ein graues Objekt erfolgt, wird von der Read-Barrier die
Trap-Funktion für Page-Fehler ausgelöst und das Objekt wird schwarz und seine refe-
renzierten Kindobjekte grau markiert.
Der Collector bearbeitet zwischen Page-Fehlern im Hintergrund die grau markierten
Pages. Bei einer sequenziellen Implementierung wird das Scannen wie bei Baker wäh-
rend der Allokation neuer Objekte durchgeführt (vgl. New in Algorithmus 4), während
bei einer nebenläufigen Implementierung der Collector zwei Threads verwendet - einen
für die Trap-Funktion von Page-Fehlern und den anderen für den Scanvorgang im Hin-
tergrund [Ap88]. Allerdings benutzen Appel, Ellis und Li eine einzelne Sperre für die
verwendeten Zeiger der verschiedenen Bereiche in Tospace (scanned, unscanned und
new). Diese globale Sperre kann zum Engpass in einem System mit einer parallelen
Implementierung werden [Jo96]. Abschließend ist zu bemerken, dass große Objekte, die
nicht mit einer Speicherseite auskommen, auch von dem Algorithmus bearbeitet werden
können, weil dafür ein sogenannter Crossing Map Array eingesetzt wird, um Übergänge
eines Objekts über mehrere Seiten nachverfolgen zu können [Jo96].
3.2.4
Replication Copying Collector
Ein Replication Copying Collector kann als eine Variante der kopierenden Garbage
Collector angesehen werden, bei der das Originalobjekt beim Kopieren nicht zerstört
wird [MMN02]. Bei inkrementellen oder konkurrenten Verfahren kann deshalb auf eine
Read-Barrier verzichtet, weil der Mutator mit den alten Objekten (in Fromspace) wei-
terarbeitet. Dafür muss der Collector eine Write-Barrier verwenden, um Änderungen an
Objekten in Fromspace auf die Replikas in Tospace zu übertragen. Die Write-Barrier
kann auch dazu verwendet werden, Änderungen zuerst bloß aufzuzeichnen, so dass, wie
im Algorithmus von Nettles et al. [Ne92], Konsistenzanforderungen gesenkt werden
können und inkonsistente Replika-Objekte erlaubt werden. Das wirkt sich reduzierend
auf Unterbrechungen der Mutatortätigkeit aus [Jo96]. Mehr Details zu Nettles Algo-
rithmus, der für die funktionale Sprache SML/NJ entwickelt wurde, sind bei Jones und
Lines [Kap. 8.4, Jo96] zu finden. Dort werden zusätzlich noch zwei weitere Replication
Copying Collector (von Huelsbergen und Larus bzw. Doligez-Leroy-Gonthier)
b
e-
|  |
|
| |
|
|