Wie identifiziert der Müllsammler Wurzeln?
-
26-10-2019 - |
Frage
Die erste Phase eines Mark-Sweep-Müllsammlers besteht darin, alle lebenden Objekte auf dem Haufen zu markieren (zu finden). Dazu muss es einen Ausgangspunkt oder eine Wurzel geben, von wo aus die gesamte Markierung beginnt. Wie identifiziert GC solche Wurzeln?
Lösung
Mit der Technik, die als Root Set Enumeratios bezeichnet wird, werden alle Wurzeln identifiziert. Hier ist Satz aus Mark-Sweep Patentdokument.
In der ersten Phase können alle direkten Verweise auf Objekte aus derzeit ausgeführten Programmen identifiziert werden. Diese Referenzen werden als Wurzeln bezeichnet oder zusammen einen Root -Satz, und ein Prozess der Identifizierung aller dieser Referenzen kann als Root -Set -Aufzählung bezeichnet werden
Hier ist Link für Patentdokument. Mark Sweep Patent Link
Obwohl es von .Net Guy war, fühle ich mich Grundlagen von Mark Sweep Link gibt Ihnen ein gutes Verständnis dafür, wie es funktioniert.
Andere Tipps
"Es wird angenommen Alle Objekte, auf die sich überall im Anrufstack (dh alle lokalen Variablen und Parameter in den derzeit aufgerufenen Funktionen) verwiesen) und alle globalen Variablen.