GC Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Steuert den System garbage Collector, einen Dienst, der automatisch nicht genutzten Arbeitsspeicher zurückgibt.
public ref class GC abstract sealed
public ref class GC sealed
public static class GC
public sealed class GC
type GC = class
Public Class GC
Public NotInheritable Class GC
- Vererbung
-
GC
Beispiele
Im folgenden Beispiel werden mehrere GC-Methoden verwendet, um Generierungs- und Speicherinformationen zu einem Block nicht verwendeter Objekte abzurufen und in der Konsole zu drucken. Die nicht verwendeten Objekte werden dann gesammelt, und die resultierenden Arbeitsspeichersummen werden angezeigt.
using System;
namespace GCCollectIntExample
{
class MyGCCollectClass
{
private const long maxGarbage = 1000;
static void Main()
{
MyGCCollectClass myGCCol = new MyGCCollectClass();
// Determine the maximum number of generations the system
// garbage collector currently supports.
Console.WriteLine("The highest generation is {0}", GC.MaxGeneration);
myGCCol.MakeSomeGarbage();
// Determine which generation myGCCol object is stored in.
Console.WriteLine("Generation: {0}", GC.GetGeneration(myGCCol));
// Determine the best available approximation of the number
// of bytes currently allocated in managed memory.
Console.WriteLine("Total Memory: {0}", GC.GetTotalMemory(false));
// Perform a collection of generation 0 only.
GC.Collect(0);
// Determine which generation myGCCol object is stored in.
Console.WriteLine("Generation: {0}", GC.GetGeneration(myGCCol));
Console.WriteLine("Total Memory: {0}", GC.GetTotalMemory(false));
// Perform a collection of all generations up to and including 2.
GC.Collect(2);
// Determine which generation myGCCol object is stored in.
Console.WriteLine("Generation: {0}", GC.GetGeneration(myGCCol));
Console.WriteLine("Total Memory: {0}", GC.GetTotalMemory(false));
Console.Read();
}
void MakeSomeGarbage()
{
Version vt;
for(int i = 0; i < maxGarbage; i++)
{
// Create objects and release them to fill up memory
// with unused objects.
vt = new Version();
}
}
}
}
open System
let maxGarbage = 1000
type MyGCCollectClass() =
member _.MakeSomeGarbage() =
for _ = 1 to maxGarbage do
// Create objects and release them to fill up memory with unused objects.
Version() |> ignore
[<EntryPoint>]
let main _ =
let myGCCol = MyGCCollectClass()
// Determine the maximum number of generations the system
// garbage collector currently supports.
printfn $"The highest generation is {GC.MaxGeneration}"
myGCCol.MakeSomeGarbage()
// Determine which generation myGCCol object is stored in.
printfn $"Generation: {GC.GetGeneration myGCCol}"
// Determine the best available approximation of the number
// of bytes currently allocated in managed memory.
printfn $"Total Memory: {GC.GetTotalMemory false}"
// Perform a collection of generation 0 only.
GC.Collect 0
// Determine which generation myGCCol object is stored in.
printfn $"Generation: {GC.GetGeneration myGCCol}"
printfn $"Total Memory: {GC.GetTotalMemory false}"
// Perform a collection of all generations up to and including 2.
GC.Collect 2
// Determine which generation myGCCol object is stored in.
printfn $"Generation: {GC.GetGeneration myGCCol}"
printfn $"Total Memory: {GC.GetTotalMemory false}"
0
Namespace GCCollectInt_Example
Class MyGCCollectClass
Private maxGarbage As Long = 10000
Public Shared Sub Main()
Dim myGCCol As New MyGCCollectClass
'Determine the maximum number of generations the system
'garbage collector currently supports.
Console.WriteLine("The highest generation is {0}", GC.MaxGeneration)
myGCCol.MakeSomeGarbage()
'Determine which generation myGCCol object is stored in.
Console.WriteLine("Generation: {0}", GC.GetGeneration(myGCCol))
'Determine the best available approximation of the number
'of bytes currently allocated in managed memory.
Console.WriteLine("Total Memory: {0}", GC.GetTotalMemory(False))
'Perform a collection of generation 0 only.
GC.Collect(0)
'Determine which generation myGCCol object is stored in.
Console.WriteLine("Generation: {0}", GC.GetGeneration(myGCCol))
Console.WriteLine("Total Memory: {0}", GC.GetTotalMemory(False))
'Perform a collection of all generations up to and including 2.
GC.Collect(2)
'Determine which generation myGCCol object is stored in.
Console.WriteLine("Generation: {0}", GC.GetGeneration(myGCCol))
Console.WriteLine("Total Memory: {0}", GC.GetTotalMemory(False))
Console.Read()
End Sub
Sub MakeSomeGarbage()
Dim vt As Version
Dim i As Integer
For i = 0 To maxGarbage - 1
'Create objects and release them to fill up memory
'with unused objects.
vt = New Version
Next i
End Sub
End Class
End Namespace
Hinweise
Weitere Informationen zu dieser API finden Sie in den ergänzenden API-Hinweisen für GC.
Eigenschaften
| Name | Beschreibung |
|---|---|
| MaxGeneration |
Ruft die maximale Anzahl von Generationen ab, die das System derzeit unterstützt. |
Methoden
| Name | Beschreibung |
|---|---|
| AddMemoryPressure(Int64) |
Informiert die Laufzeit einer großen Zuweisung von nicht verwaltetem Speicher, die bei der Planung der Garbage Collection berücksichtigt werden soll. |
| AllocateArray<T>(Int32, Boolean) |
Weist ein Array zu. |
| AllocateUninitializedArray<T>(Int32, Boolean) |
Ordnet ein Array zu, während die Nullinitialisierung übersprungen wird, falls möglich. |
| CancelFullGCNotification() |
Bricht die Registrierung einer Garbage Collection-Benachrichtigung ab. |
| Collect() |
Erzwingt eine sofortige Garbage Collection aller Generationen. |
| Collect(Int32, GCCollectionMode, Boolean, Boolean) |
Erzwingt eine Garbage Collection von Generation 0 bis zu einer angegebenen Generation zu einem zeitpunkt, der durch einen GCCollectionMode Wert angegeben wird, mit Werten, die angeben, ob die Auflistung blockiert und komprimiert werden soll. |
| Collect(Int32, GCCollectionMode, Boolean) |
Erzwingt eine Garbage Collection von Generation 0 bis zu einer angegebenen Generation zu einem durch einen GCCollectionMode Wert angegebenen Zeitpunkt, wobei ein Wert angegeben wird, der angibt, ob die Auflistung blockiert werden soll. |
| Collect(Int32, GCCollectionMode) |
Erzwingt eine Garbage Collection von Generation 0 bis zu einer angegebenen Generation zu einem durch einen GCCollectionMode Wert angegebenen Zeitpunkt. |
| Collect(Int32) |
Erzwingt eine sofortige Garbage Collection von Generation 0 über eine angegebene Generation. |
| CollectionCount(Int32) |
Gibt die Häufigkeit zurück, mit der die Garbage Collection für die angegebene Generierung von Objekten aufgetreten ist. |
| EndNoGCRegion() |
Beendet den Latenzmodus der GC-Region. |
| GetAllocatedBytesForCurrentThread() |
Ruft die Gesamtanzahl der Bytes ab, die dem aktuellen Thread seit dem Beginn der Lebensdauer zugeordnet sind. |
| GetConfigurationVariables() |
Ruft die Konfigurationen ab, die vom Garbage Collector verwendet werden. |
| GetGCMemoryInfo() |
Ruft Speicherinformationen für die Garbage Collection ab. |
| GetGCMemoryInfo(GCKind) |
Ruft Speicherinformationen für die Garbage Collection ab. |
| GetGeneration(Object) |
Gibt die aktuelle Generationsnummer des angegebenen Objekts zurück. |
| GetGeneration(WeakReference) |
Gibt die Aktuelle Generationsnummer des Ziels eines angegebenen schwachen Bezugs zurück. |
| GetTotalAllocatedBytes(Boolean) |
Ruft die Anzahl der Bytes ab, die über die Lebensdauer des Prozesses zugewiesen wurden. Der zurückgegebene Wert enthält keine systemeigenen Zuordnungen. |
| GetTotalMemory(Boolean) |
Ruft die Heapgröße ohne Fragmentierung ab. Wenn z. B. die Gesamtgröße des GC-Heaps 100 mb beträgt und Fragmentierung, also Speicherplatz, der von freien Objekten eingenommen wird, 40 MB beansprucht wird, würde diese API 60 mb melden. Ein Parameter gibt an, ob diese Methode vor dem Zurückgeben ein kurzes Intervall warten kann, um dem System das Sammeln von Garbage and Finalize-Objekten zu ermöglichen. |
| GetTotalPauseDuration() |
Ruft die Gesamtdauer ab, die seit dem Beginn des Prozesses in GC angehalten wurde. |
| KeepAlive(Object) |
Verweist auf das angegebene Objekt, wodurch es für die Garbage Collection vom Anfang der aktuellen Routine bis zum Punkt, an dem diese Methode aufgerufen wird, nicht zuzuverlangen ist. |
| RefreshMemoryLimit() |
Weist den Garbage Collector an, sich neu zu konfigurieren, indem die verschiedenen Speichergrenzwerte für das System erkannt werden. |
| RegisterForFullGCNotification(Int32, Int32) |
Gibt an, dass eine Garbage Collection-Benachrichtigung ausgelöst werden soll, wenn Bedingungen die vollständige Garbage Collection bevorzugen und wann die Auflistung abgeschlossen wurde. |
| RegisterNoGCRegionCallback(Int64, Action) |
Registriert einen Rückruf, der aufgerufen werden soll, wenn ein bestimmter Arbeitsspeicher in der Region ohne GC zugewiesen wird. |
| RemoveMemoryPressure(Int64) |
Informiert die Laufzeit, dass nicht verwalteter Speicher freigegeben wurde und beim Planen der Garbage Collection nicht mehr berücksichtigt werden muss. |
| ReRegisterForFinalize(Object) |
Fordert an, dass das System den Finalizer für das angegebene Objekt aufruft, für das SuppressFinalize(Object) zuvor aufgerufen wurde. |
| SuppressFinalize(Object) |
Fordert an, dass die Common Language Runtime nicht den Finalizer für das angegebene Objekt aufruft. |
| TryStartNoGCRegion(Int64, Boolean) |
Versucht, die Garbage Collection während der Ausführung eines kritischen Pfads zu verbieten, wenn eine angegebene Speichermenge verfügbar ist, und steuert, ob der Garbage Collector eine vollständige Blockierung der Garbage Collection durchführt, wenn nicht genügend Arbeitsspeicher anfänglich verfügbar ist. |
| TryStartNoGCRegion(Int64, Int64, Boolean) |
Versucht, die Garbage Collection während der Ausführung eines kritischen Pfads zu verbieten, wenn eine angegebene Speichermenge für den Heap des großen Objekts und den kleinen Objekt heap verfügbar ist, und steuert, ob der Garbage Collector eine vollständige Blockierung der Garbage Collection durchführt, wenn nicht genügend Arbeitsspeicher anfänglich verfügbar ist. |
| TryStartNoGCRegion(Int64, Int64) |
Versucht, die Garbage Collection während der Ausführung eines kritischen Pfads zu verbieten, wenn eine angegebene Speichermenge für den Heap des großen Objekts und den Heap für kleine Objekte verfügbar ist. |
| TryStartNoGCRegion(Int64) |
Versucht, die Garbage Collection während der Ausführung eines kritischen Pfads zu verbieten, wenn eine angegebene Speichermenge verfügbar ist. |
| WaitForFullGCApproach() |
Gibt den Status einer registrierten Benachrichtigung zurück, um festzustellen, ob eine vollständige, blockierende Garbage Collection durch die Common Language Runtime unmittelbar bevorsteht. |
| WaitForFullGCApproach(Int32) |
Gibt in einem angegebenen Timeoutzeitraum den Status einer registrierten Benachrichtigung zurück, um zu bestimmen, ob eine vollständige, blockierende Garbage Collection durch die Common Language Runtime unmittelbar bevorsteht. |
| WaitForFullGCApproach(TimeSpan) |
Gibt in einem angegebenen Timeoutzeitraum den Status einer registrierten Benachrichtigung zurück, um zu bestimmen, ob eine vollständige, blockierende Garbage Collection durch die Common Language Runtime unmittelbar bevorsteht. |
| WaitForFullGCComplete() |
Gibt den Status einer registrierten Benachrichtigung zurück, um festzustellen, ob eine vollständige, blockierte Garbage Collection durch die Common Language Runtime abgeschlossen wurde. |
| WaitForFullGCComplete(Int32) |
Gibt in einem angegebenen Timeoutzeitraum den Status einer registrierten Benachrichtigung zurück, um zu bestimmen, ob eine vollständige, blockierende Garbage Collection durch gemeinsame Sprache abgeschlossen wurde. |
| WaitForFullGCComplete(TimeSpan) |
Gibt den Status einer registrierten Benachrichtigung zurück, ob eine blockende Garbage Collection abgeschlossen wurde. Kann auf unbestimmte Zeit auf eine vollständige Sammlung warten. |
| WaitForPendingFinalizers() |
Hält den aktuellen Thread an, bis der Thread, der die Warteschlange der Finalizer verarbeitet, diese Warteschlange geleert hat. |