Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In den meisten Fällen können Sie es dem Garbage Collector überlassen, den am besten geeigneten Zeitpunkt für eine Collection zu bestimmen. Es gibt selten Situationen, in denen eine erzwungene Sammlung die Leistung Ihrer Anwendung verbessern kann. In diesen Fällen können Sie die Garbage Collection auslösen, indem Sie die GC.Collect-Methode zum Erzwingen einer Garbage Collection wählen.
Verwenden Sie die GC.Collect Methode, wenn es zu einem bestimmten Zeitpunkt im Code Ihrer Anwendung zu einer erheblichen Reduzierung des Arbeitsspeichers kommt. Wenn Ihre Anwendung z. B. ein komplexes Dialogfeld mit mehreren Steuerelementen verwendet, kann das Aufrufen von Collect beim Schließen des Dialogfelds die Leistung verbessern, indem der vom Dialogfeld verwendete Arbeitsspeicher sofort zurückgegeben wird. Stellen Sie sicher, dass Ihre Anwendung die Garbage Collection nicht zu häufig induziert, da dies die Leistung verringern kann, wenn der Garbage Collector versucht, Objekte zu nicht optimalen Zeiten zurückzufordern. Sie können der GCCollectionMode.Optimized Methode einen Collect Enumerationswert bereitstellen, um nur dann zu sammeln, wenn dies sinnvoll wäre, wie im folgenden Abschnitt erklärt.
Der GC-Sammlungsmodus
Sie können eine der GC.Collect-Methodenüberladungen verwenden, die einen GCCollectionMode-Wert enthält, um das Verhalten einer erzwungenen Auflistung wie folgt zu bestimmen.
GCCollectionMode-Wert |
BESCHREIBUNG |
|---|---|
| Default | Verwendet die Standardeinstellung für die Garbage Collection für die ausgeführte Version von .NET. |
| Forced | Erzwingt die sofortige Durchführung der Garbage Collection. Dies entspricht dem Aufruf der GC.Collect()-Überladung. Dies führt zu einer vollständigen blockierenden Auflistung aller Generationen. Sie können auch das große Objektheap komprimieren, indem Sie die GCSettings.LargeObjectHeapCompactionMode-Eigenschaft auf GCLargeObjectHeapCompactionMode.CompactOnce festlegen, bevor Sie eine unmittelbare vollständige blockierende Garbage Collection erzwingen. |
| Optimized | Ermöglicht dem Garbage Collector zu bestimmen, ob die aktuelle Zeit optimal ist, um Objekte zurückzufordern. Der Garbage Collector kann ermitteln, dass eine Auflistung nicht produktiv genug wäre. In diesem Fall kehrt er zurück, ohne Objekte freizugeben. |
Hintergrund oder blockierende Auflistungen
Sie können die GC.Collect(Int32, GCCollectionMode, Boolean)-Methodenüberladung aufrufen, um anzugeben, ob eine ausgelöste Auflistung blockiert wird oder nicht. Der Typ der ausgeführten Auflistung hängt von einer Kombination der mode und blocking-Parameter der Methode ab. mode ist ein Element der GCCollectionMode Enumeration und blocking ist ein Boolean Wert. In der folgenden Tabelle sind die Interaktionen der Argumente mode und blocking zusammengefasst.
mode |
blocking = true |
blocking = false |
|---|---|---|
| Forced oder Default | Eine blockierende Auflistung wird so schnell wie möglich ausgeführt. Wenn eine Hintergrundauflistung ausgeführt wird und die Generation 0 oder 1 ist, löst die Collect(Int32, GCCollectionMode, Boolean)-Methode sofort eine blockierende Auflistung aus und wird zurückgegeben, wenn die Auflistung abgeschlossen ist. Wenn eine Hintergrundauflistung ausgeführt wird und der generation Parameter 2 ist, wartet die Methode, bis die Hintergrundauflistung abgeschlossen ist, löst eine blockierende Sammlung der 2. Generation aus und gibt dann zurück. |
Eine Erhebung wird so schnell wie möglich durchgeführt. Die Collect(Int32, GCCollectionMode, Boolean) Methode fordert eine Hintergrundauflistung an, dies ist jedoch nicht gewährleistet. Abhängig von den Umständen kann eine Blockierungsauflistung weiterhin ausgeführt werden. Wenn eine Hintergrundauflistung bereits ausgeführt wird, gibt die Methode sofort zurück. |
| Optimized | Eine blockierende Auflistung kann ausgeführt werden, je nach Zustand des Garbage Collectors und des generation-Parameters. Der Garbage Collector versucht, eine optimale Leistung zu erzielen. |
Eine Auflistung kann ausgeführt werden, je nach Zustand des Garbage Collectors. Die Collect(Int32, GCCollectionMode, Boolean) Methode fordert eine Hintergrundauflistung an, dies ist jedoch nicht gewährleistet. Abhängig von den Umständen kann eine Blockierungsauflistung weiterhin ausgeführt werden. Der Garbage Collector versucht, eine optimale Leistung zu erzielen. Wenn eine Hintergrundauflistung bereits ausgeführt wird, gibt die Methode sofort zurück. |