Garbage Collector (GC)
Eintrag zuletzt aktualisiert am: 27.03.2018
Die Laufzeitumgebung
Common Language Runtime (
CLR) von .NET,
.NET Core und
Xamarin enthält einen Garbage Collector (GC), der im Hintergrund (in einem System-
Thread) arbeitet und den Speicher aufräumt. Der Speicher wird allerdings nicht sofort nach dem Ende der Verwendung eines
Objekts freigegeben, sondern zu einem nicht festgelegten Zeitpunkt bei Bedarf (Lazy Resource Recovery). Beim Aufräumen des Speichers erzeugt der Garbage Collector einen Baum aller
Objekte, auf die es aktuell einen
Objektverweis gibt. Der Speicher aller nicht mehr erreichbaren
Objekte wird freigegeben.
Der Garbage Collector kann von einer Anwendung nur bedingt beeinflusst werden. Die Anwendung kann mit dem Befehl System.GC.Collect() dem Garbage Collector den Auftrag geben, tätig zu werden. Eine Anwendung eine Speicherbereinigung temporär mit GC.TryStart
NoGCRegion() unterdrücken.
Der Garbage Collector ruft die Destruktoren (alias Finalizer) der .NET-
Objekte auf. Die Reihenfolge des Aufrufs und ob der Finalizer überhaupt aufgerufen wird, ist jedoch nicht deterministisch, d. h., es kann sein, dass ein Finalizer nicht aufgerufen wird. Beim Schließen einer .NET-Anwendung werden die Finalizer der verbliebenen
Objekte nicht aufgerufen