| |
24
derselben Gruppe liegt. Nachdem alle Nachrichten verschickt worden sind, werden die-
jenigen Objekte als hart markiert, die noch einen positiven Zähler aufweisen, d.h. auf
die Referenzen von außerhalb der Gruppe bestehen. Die restlichen Objekte werden als
weich gekennzeic hnet. Am Ende sind alle Objekte, die von einem Root Set oder von
Knoten außerhalb der Gruppe zugreifbar sind, hart markiert.
Der dritte Schritt beinhaltet die sogenannte Local Propagation, für die eine Kooperation
der lokalen Collector benötigt wird. Initial werden in allen Knoten die Markierungen
von Exit-Elementen auf nicht-markiert (none) zurückgesetzt. Beim ersten Tracing-
Vorgang werden - ausgehend von harten Entry-Elementen und Root-Elementen - alle
erreichten Exit-Elemente als hart markiert (siehe Abb. 7). Die zweite Tracing-Runde
geht von weichen Entry-Elementen aus. Dabei werden erreichte Exit-Elemente weich
markiert, sofern sie nicht schon als hart markiert sind. Zellen die weder von Entry-
Elementen noch vom Root Set erreicht worden sind, können wieder für die Allokation
neuer Objekte zur Verfügung gestellt werden. Auch die Exit-Elemente, die weder hart
noch weich markiert worden sind, werden nicht mehr benötigt.
Abb. 7: Markierung beim Local Propagation
Als nächstes wird bei der Global Propagation die Markierung von harten Exit-
Elementen an alle referenzierten Entry-Elemente anderer Knoten weitergegeben, die zu
derselben Gruppe gehören. Für eine neu angelegte Remote-Referenz wird das Entry-
Element ebenfalls hart markiert. Die Weitergabe der Markierung an Entry- Elemente
wird so lange fortgesetzt bis innerhalb einer Gruppe Stabilität erreicht wird, d.h. dass
erstens die Knoten innerhalb der Gruppe keinerlei Daten mehr haben, die eine weitere
(Hart-) Markierung rechtfertigen und zweitens keine Markierungsnachrichten mehr un-
terwegs sind.
weich
hart
weich
hart
Entry-Elemente
Root
Exit -Elemente
Knoten
Quelle: [La92]
nicht-
markiert
|  |
|
| |
|
|