| |
7
Nebenläufigkeit von Mutator und Collector durch Synchronisation eingeschränkt wer-
den, um Konsistenz zu erhalten. Bei einem inkrementellen Mark-Sweep Collector ergibt
sich ein Multiple-Reader/Single-Writer Kohärenzproblem, weil sowohl Collector als
auch Mutator Felder mit Zeigern auslesen, aber ein Mutator diese auch verändern kann.
Für einen inkrementellen Copying Collector ergibt sich ein Multiple-Reader/Multiple-
Writer Problem, da der Collector beim Kopieren von Objekten auch schreibend auf Ze i-
gerfelder zugreift [Jo96].
Quelle: [S.185, Jo96]
Abb. 1: Einfluss von Mutator-Aktivitäten auf den Collector
Die Forderung nach einer konsistenten Sicht von Mutator und Collector auf die Erreich-
barkeit von Objekten kann jedoch für die Umsetzung von GC insofern gelockert wer-
den, dass nicht beide zu jedem Zeitpunkt die gleiche Sicht haben müssen. Beispielswei-
se kommt es vor, dass ein Collector noch manche Objekte, die nicht mehr vom Root Set
erreichbar sind, als lebend behandelt, obwohl der Mutator nicht mehr darauf zugreifen
kann. Diese Sicht des Collectors wird auch als konservativ bezeichnet, weil im Speicher
noch sogenannter Floating Garbage bestehen bleibt, der bei den meisten Verfahren wäh-
rend der nächsten GC-Phase entfernt wird.
3.1.2
Dreifarben-Markierung
Um bei der GC den Suchvorgang nach erreichbaren Objekten im Speicher abstrakt zu
beschreiben, werden häufig die drei Farben - weiß, grau und schwarz - verwendet. Am
Anfang einer GC-Phase werden alle Knoten im Erreichbarkeitsgraphen bzw. Zellen im
Speicher als weiß betrachtet. Wird ein Objekt beim Traversierungsvorgang eines Col-
A
B
root
C
A
B
root
C
A
B
root
C
a)
b)
Schritt 1
Schritt 2
c)
|  |
|
| |
|
|