Teilen über


.NET-Runtime-Ereignisse der Garbage Collection

Die in diesem Artikel beschriebenen Ereignisse sammeln Informationen zur Garbage Collection. Sie helfen bei der Diagnose und beim Debuggen, einschließlich der Ermittlung, wie oft die Garbage Collection ausgeführt wurde, wie viel Arbeitsspeicher während der Garbage Collection freigegeben wurde usw. Weitere Informationen zur Verwendung dieser Ereignisse zu Diagnose zwecken finden Sie unter Protokollierung und Ablaufverfolgung von .NET-Anwendungen

GCStart_V2-Ereignis

Die folgende Tabelle zeigt das Schlüsselwort und die Ebene an:

Schlüsselwort zum Auslösen des Ereignisses Ebene
GCKeyword (0x1) Information (4)

Die folgende Tabelle zeigt die Ereignisinformationen an:

Ereignis Ereignis-ID Wird ausgelöst, wenn
GCStart_V1 1 Eine Garbage Collection gestartet wurde.

Die folgende Tabelle zeigt die Ereignisdaten an:

Feldname Datentyp BESCHREIBUNG
Count win:UInt32 Die N-te Garbage Collection.
Depth win:UInt32 Die erfasste Generation.
Reason win:UInt32 Grund für die Auslösung der Garbage Collection:

0x0 - Zuordnung für kleinen Objektheap.

0x1 - Induziert.

0x2 - Zu wenig Speicherplatz.

0x3 - Leer.

0x4 - Zuordnung für großen Objektheap.

0x5 - Nicht genügend Speicherplatz (für kleinen Objektheap).

0x6 - Nicht genügend Speicherplatz (für großen Objektheap).

0x7 - Induziert, jedoch nicht als blockierend erzwungen.
Type win:UInt32 0x0 - Blockieren der Garbage Collection, die außerhalb der Garbage Collection im Hintergrund erfolgt ist.

0x1 - Garbage Collection im Hintergrund.

0x2 - Blockieren der Garbage Collection, die während der Garbage Collection im Hintergrund erfolgt ist.
ClrInstanceID win:UInt16 Eindeutige ID für die Instanz von CoreCLR.

GCEnd_V1-Ereignis

Die folgende Tabelle zeigt das Schlüsselwort und die Ebene an:

Schlüsselwort zum Auslösen des Ereignisses Ebene
GCKeyword (0x1) Information (4)

Die folgende Tabelle zeigt die Ereignisinformationen an:

Ereignis Ereignis-ID Wird ausgelöst, wenn
GCEnd_V1 2 Die Garbage Collection beendet wurde.

Die folgende Tabelle zeigt die Ereignisdaten an:

Feldname Datentyp BESCHREIBUNG
Count win:UInt32 Die N-te Garbage Collection.
Depth win:UInt32 Die Generation, die erfasst wurde.
ClrInstanceID win:UInt16 Eindeutige ID für die Instanz von CoreCLR.

GCHeapStats_V2-Ereignis

Die folgende Tabelle zeigt das Schlüsselwort und die Ebene an:

Schlüsselwort zum Auslösen des Ereignisses Ebene
GCKeyword (0x1) Information (4)

Die folgende Tabelle zeigt die Ereignisinformationen an:

Ereignis Ereignis-ID BESCHREIBUNG
GCHeapStats_V2 4 Zeigt die Heapstatistik am Ende jeder Garbage Collection an.

Die folgende Tabelle zeigt die Ereignisdaten an:

Feldname Datentyp BESCHREIBUNG
GenerationSize0 win:UInt64 Die Größe des Arbeitsspeichers der Generation 0 in Bytes.
TotalPromotedSize0 win:UInt64 Die Anzahl der Bytes, die von Generation 0 zu Generation 1 höher gestuft werden.
GenerationSize1 win:UInt64 Die Größe des Arbeitsspeichers der Generation 1 in Bytes.
TotalPromotedSize1 win:UInt64 Die Anzahl der Bytes, die von Generation 1 zu Generation 2 höher gestuft werden.
GenerationSize2 win:UInt64 Die Größe des Arbeitsspeichers der Generation 2 in Bytes.
TotalPromotedSize2 win:UInt64 Die Anzahl der Bytes, die nach der letzten Garbage Collection in Generation 2 noch vorhanden sind.
GenerationSize3 win:UInt64 Die Größe des großen Objektheaps in Bytes.
TotalPromotedSize3 win:UInt64 Die Anzahl der Bytes, die nach der letzten Garbage Collection im großen Objektheap noch vorhanden sind.
FinalizationPromotedSize win:UInt64 Die Gesamtgröße der Objekte in Bytes, die auf einen Abschluss warten.
FinalizationPromotedCount win:UInt64 Die Anzahl der Objekte, die auf einen Abschluss warten.
PinnedObjectCount win:UInt32 Die Anzahl der fixierten (unverschiebbaren) Objekte.
SinkBlockCount win:UInt32 Die Anzahl der verwendeten Synchronisierungsblöcke.
GCHandleCount win:UInt32 Die Anzahl der verwendeten Garbage Collection-Handles.
ClrInstanceID win:UInt16 Eindeutige ID für die Instanz von CoreCLR.
GenerationSize4 win:UInt64 Die Größe des angehefteten großen Objektheaps in Bytes.
TotalPromotedSize4 win:UInt64 Die Anzahl der Bytes, die nach der letzten Garbage Collection im angehefteten großen Objektheap noch vorhanden sind.

GCCreateSegment_V1-Ereignis

Die folgende Tabelle zeigt das Schlüsselwort und die Ebene an:

Schlüsselwort zum Auslösen des Ereignisses Ebene
GCKeyword (0x1) Information (4)

Die folgende Tabelle zeigt die Ereignisinformationen an:

Ereignis Ereignis-ID Wird ausgelöst, wenn
GCCreateSegment_V1 5 Neues Garbage Collection-Segment wurde erstellt. Darüber hinaus wird dieses Ereignis für jedes vorhandene Segment ausgelöst, wenn die Ablaufverfolgung für einen Prozess aktiviert ist, der bereits ausgeführt wird.

Die folgende Tabelle zeigt die Ereignisdaten an:

Feldname Datentyp BESCHREIBUNG
Address win:UInt64 Die Adresse des Segments.
Size win:UInt64 Die Größe des Segments.
Type win:UInt32 0x0 – Kleiner Objektheap.

0x1 – Großer Objektheap.

0x2 – Schreibgeschützter Heap.
ClrInstanceID win:UInt16 Eindeutige ID für die Instanz von CoreCLR.

Beachten Sie, dass die Größe der Segmente, die vom Garbage Collector zugeordnet werden, implementierungsspezifisch ist und jederzeit, auch in regelmäßigen Updates, geändert werden kann. Für eine Anwendung darf weder eine bestimmte Segmentgröße vorausgesetzt werden, noch darf sie von einer bestimmten Segmentgröße abhängen noch darf in ihr versucht werden, die Menge des für Segmentbelegungen verfügbaren Speichers zu konfigurieren.

GCFreeSegment_V1-Ereignis

Die folgende Tabelle zeigt das Schlüsselwort und die Ebene an:

Schlüsselwort zum Auslösen des Ereignisses Ebene
GCKeyword (0x1) Information (4)

Die folgende Tabelle zeigt die Ereignisinformationen an:

Ereignis Ereignis-ID Wird ausgelöst, wenn
GCFreeSegment_V1 6 Ein Garbage Collection-Segment freigegeben wurde.

Die folgende Tabelle zeigt die Ereignisdaten an:

Feldname Datentyp BESCHREIBUNG
Address win:UInt64 Die Adresse des Segments.
ClrInstanceID win:UInt16 Eindeutige ID für die Instanz von CoreCLR.

GCRestartEEBegin_V1-Ereignis

Die folgende Tabelle zeigt das Schlüsselwort und die Ebene an:

Schlüsselwort zum Auslösen des Ereignisses Ebene
GCKeyword (0x1) Information (4)

Die folgende Tabelle zeigt die Ereignisinformationen an:

Ereignis Ereignis-ID Wird ausgelöst, wenn
GCRestartEEBegin_V1 7 Die Wiederaufnahme der Common Language Runtime-Unterbrechung begonnen hat.

Dieses Ereignis weist keine Ereignisdaten auf.

GCRestartEEEnd_V1-Ereignis

Die folgende Tabelle zeigt das Schlüsselwort und die Ebene an:

Schlüsselwort zum Auslösen des Ereignisses Ebene
GCKeyword (0x1) Information (4)

Die folgende Tabelle zeigt die Ereignisinformationen an:

Ereignis Ereignis-ID Wird ausgelöst, wenn
GCRestartEEEnd_V1 3 Die Wiederaufnahme der Common Language Runtime-Unterbrechung beendet wurde.

Dieses Ereignis weist keine Ereignisdaten auf.

GCSuspendEEEnd_V1-Ereignis

Die folgende Tabelle zeigt das Schlüsselwort und die Ebene an:

Schlüsselwort zum Auslösen des Ereignisses Ebene
GCKeyword (0x1) Information (4)

Die folgende Tabelle zeigt die Ereignisinformationen an:

Ereignis Ereignis-ID Wird ausgelöst, wenn
GCSuspendEEEnd_V1 8 Die Unterbrechung der Ausführungs-Engine für die Garbage Collection beendet wurde.

Dieses Ereignis weist keine Ereignisdaten auf.

GCSuspendEEBegin_V1-Ereignis

Die folgende Tabelle zeigt das Schlüsselwort und die Ebene an:

Schlüsselwort zum Auslösen des Ereignisses Ebene
GCKeyword (0x1) Information (4)

Die folgende Tabelle zeigt die Ereignisinformationen an:

Ereignis Ereignis-ID Wird ausgelöst, wenn
GCSuspendEEBegin_V1 9 Die Unterbrechung der Ausführungs-Engine für die Garbage Collection gestartet wurde.
Feldname Datentyp BESCHREIBUNG
Count win:UInt32 Die N-te Garbage Collection.
Reason win:UInt32 Grund für das Anhalten der EE.

0x0: Anhalten für andere

0x1: Anhalten für GC.

0x2: Anhalten für das Herunterfahren der AppDomain.

0x3: Anhalten für Code-Pitching.

0x4: Anhalte für Herunterfahren.

0x5: Anhalten für Debugger.

0x6: Anhalten für GC Prep.

0x7: Anhalten für Debugger-Sweep

GCAllocationTick_V3-Ereignis

Die folgende Tabelle zeigt das Schlüsselwort und die Ebene an:

Schlüsselwort zum Auslösen des Ereignisses Ebene
GCKeyword (0x1) Ausführlich (5)

Die folgende Tabelle zeigt die Ereignisinformationen an:

Ereignis Ereignis-ID Wird ausgelöst, wenn
GCAllocationTick_V3 10 Jedes Mal werden ungefähr 100 KB zugeordnet.

Die folgende Tabelle zeigt die Ereignisdaten an:

Feldname Datentyp BESCHREIBUNG
AllocationAmount win:UInt32 Die Zuordnungsgröße in Bytes. Dieser Wert ist für Zuordnungen präzise, die kleiner als die Länge von ULONG sind (4.294.967.295 Bytes). Wenn die Zuordnung größer ist, enthält dieses Feld einen abgeschnittenen Wert. Verwenden Sie AllocationAmount64 für sehr große Zuordnungen.
AllocationKind win:UInt32 0x0 - Kleine Objektzuordnung (Zuordnung erfolgt im kleinen Objektheap).

0x1 - Große Objektzuordnung (Zuordnung erfolgt im großen Objektheap).
AllocationAmount64 win:UInt64 Die Zuordnungsgröße in Bytes. Dieser Wert ist für sehr große Zuordnungen präzise.
TypeId win:Pointer Die Adresse der Methodentabelle. Wenn es verschiedene Typen von Objekten gibt, die während dieses Ereignisses zugeordnet wurden, ist dies die Adresse der Methodentabelle, die dem zuletzt zugeordneten Objekt (das Objekt, das den Schwellenwert von 100 KB überschritten hat) entspricht.
TypeName win:UnicodeString Der Name des zugeordneten Typs. Wenn es verschiedene Typen von Objekten gibt, die während dieses Ereignisses zugeordnet wurden, ist dies der Typ des zuletzt zugeordneten Objekts (das Objekt, das den Schwellenwert von 100 KB überschritten hat).
HeapIndex win:UInt32 Der Heap, auf dem das Objekt zugeordnet wurde. Dieser Wert ist 0 (null), wenn die Ausführung mit Garbage Collection für die Arbeitsstation erfolgt.
Address win:Pointer Die Adresse des zuletzt zugeordneten Objekts.
ClrInstanceID win:UInt16 Eindeutige ID für die Instanz von CoreCLR.

GCCreateConcurrentThread_V1-Ereignis

Die folgende Tabelle zeigt das Schlüsselwort und die Ebene an:

Schlüsselwort zum Auslösen des Ereignisses Ebene
GCKeyword (0x1) Information (4)
ThreadingKeyword (0x10000) Information (4)

Die folgende Tabelle zeigt die Ereignisinformationen an:

Ereignis Ereignis-ID Wird ausgelöst, wenn
GCCreateConcurrentThread_V1 11 Thread für parallele Garbage Collection erstellt wurde.

Dieses Ereignis weist keine Ereignisdaten auf.

GCTerminateConcurrentThread_V1-Ereignis

Die folgende Tabelle zeigt das Schlüsselwort und die Ebene an:

Schlüsselwort zum Auslösen des Ereignisses Ebene
GCKeyword (0x1) Information (4)
ThreadingKeyword (0x10000) Information (4)

Die folgende Tabelle zeigt die Ereignisinformationen an:

Ereignis Ereignis-ID Wird ausgelöst, wenn
GCTerminateConcurrentThread_V1 12 Thread für parallele Garbage Collection beendet wurde.

Dieses Ereignis weist keine Ereignisdaten auf.

GCFinalizersBegin_V1-Ereignis

Die folgende Tabelle zeigt das Schlüsselwort und die Ebene an:

Schlüsselwort zum Auslösen des Ereignisses Ebene
GCKeyword (0x1) Information (4)

Die folgende Tabelle zeigt die Ereignisinformationen an:

Ereignis Ereignis-ID Wird ausgelöst, wenn
GCFinalizersBegin_V1 14 Die Ausführung von Finalizern gestartet wird.

Dieses Ereignis weist keine Ereignisdaten auf.

GCFinalizersEnd_V1-Ereignis

Die folgende Tabelle zeigt das Schlüsselwort und die Ebene an:

Schlüsselwort zum Auslösen des Ereignisses Ebene
GCKeyword (0x1) Information (4)

Die folgende Tabelle zeigt die Ereignisinformationen an:

Ereignis Ereignis-ID Wird ausgelöst, wenn
GCFinalizersEnd_V1 13 Die Ausführung von Finalizern beendet wird.

Die folgende Tabelle zeigt die Ereignisdaten an:

Feldname Datentyp BESCHREIBUNG
Count win:UInt32 Die Anzahl der ausgeführten Finalizer.
ClrInstanceID win:UInt16 Eindeutige ID für die Instanz von CLR oder CoreCLR.

SetGCHandle-Ereignis

Die folgende Tabelle zeigt das Schlüsselwort und die Ebene an:

Schlüsselwort zum Auslösen des Ereignisses Ebene
GCHandleKeyword (0x2) Information (4)

Die folgende Tabelle zeigt die Ereignisinformationen an:

Ereignis Ereignis-ID Wird ausgelöst, wenn
SetGCHandle 30 Ein GC-Handle wurde festgelegt.

Die folgende Tabelle zeigt die Ereignisdaten an:

Feldname Datentyp BESCHREIBUNG
HandleID win:Pointer Die Adresse des zugewiesenen Handles.
ObjectID win:Pointer Die Adresse des Objekts, dessen Handle erstellt wurde.
Kind win:UInt32 Der Typ des festgelegten GC-Handles.

0x0: Schwach kurz

0x1: Schwach lang

0x2: Stark

0x3: Angeheftet

0x4: Variable

0x5: Ref gezählt

0x6: Abhängig

0x7: Async angeheftet

0x8: Ref dimensioniert
Generation win:UInt32 Die Generation des Objekts, dessen Handle erstellt wurde.
AppDomainID win:UInt64 Die ID der Anwendungsdomäne.
ClrInstanceID win:UInt16 Eindeutige ID für die Instanz von CoreCLR.

DestroyGCHandle-Ereignis

Die folgende Tabelle zeigt das Schlüsselwort und die Ebene an:

Schlüsselwort zum Auslösen des Ereignisses Ebene
GCHandleKeyword (0x2) Information (4)

Die folgende Tabelle zeigt die Ereignisinformationen an:

Ereignis Ereignis-ID Wird ausgelöst, wenn
DestroyGCHandle 31 Ein GC-Handle wird zerstört.

Die folgende Tabelle zeigt die Ereignisdaten an:

Feldname Datentyp BESCHREIBUNG
HandleID win:Pointer Die Adresse des zerstörten Handles.
ClrInstanceID win:UInt16 Eindeutige ID für die Instanz von CoreCLR.

PinObjectAtGCTime-Ereignis

Die folgende Tabelle zeigt das Schlüsselwort und die Ebene an:

Schlüsselwort zum Auslösen des Ereignisses Ebene
GCKeyword (0x1) Ausführlich (5)

Die folgende Tabelle zeigt die Ereignisinformationen an:

Ereignis Ereignis-ID Wird ausgelöst, wenn
PinObjectAtGCTime 33 Ein Objekt wurde während einer GC angeheftet.

Die folgende Tabelle zeigt die Ereignisdaten an:

Feldname Datentyp BESCHREIBUNG
HandleID win:Pointer Die Adresse des Handles.
ObjectID win:Pointer Die Adresse des angehefteten Objekts.
ObjectSize win:UInt64 Die Größe des angehefteten Objekts.
TypeName win:UnicodeString Der Name des Typs des angehefteten Objekts.
ClrInstanceID win:UInt16 Eindeutige ID für die Instanz von CoreCLR.

GCTriggered-Ereignis

Die folgende Tabelle zeigt das Schlüsselwort und die Ebene an:

Schlüsselwort zum Auslösen des Ereignisses Ebene
GCKeyword (0x1) Ausführlich (5)

Die folgende Tabelle zeigt die Ereignisinformationen an:

Ereignis Ereignis-ID Wird ausgelöst, wenn
GCTriggered 35 Ein GC wurde ausgelöst.

Die folgende Tabelle zeigt die Ereignisdaten an:

Feldname Datentyp BESCHREIBUNG
Reason win:UInt32 Der Grund für die Auslösung eines GC.

0x0: Zuordnung klein

0x1: Induziert

0x2: Zu wenig Speicherplatz

0x3: Leer

0x4: Zuordnung groß

0x5: Nicht genügend Speicherplatz für kleinen Objektheap

0x6: Nicht genügend Speicherplatz für großen Objektheap

0x7: Induziert und nicht erzwungen

0x8: Belastung

0x9: Induziert und zu wenig Speicherplatz
ClrInstanceID win:UInt16 Eindeutige ID für die Instanz von CoreCLR.

IncreaseMemoryPressure-Ereignis

Die folgende Tabelle zeigt das Schlüsselwort und die Ebene an:

Schlüsselwort zum Auslösen des Ereignisses Ebene
GCKeyword (0x1) Information (4)

Die folgende Tabelle zeigt die Ereignisinformationen an:

Ereignis Ereignis-ID Wird ausgelöst, wenn
IncreaseMemoryPressure 200 Hohe Arbeitsspeicherauslastung.

Die folgende Tabelle zeigt die Ereignisdaten an:

Feldname Datentyp BESCHREIBUNG
ClrInstanceID win:UInt16 Eindeutige ID für die Instanz von CoreCLR.

Decreasememorypressure-Ereignis

Die folgende Tabelle zeigt das Schlüsselwort und die Ebene an:

Schlüsselwort zum Auslösen des Ereignisses Ebene
GCKeyword (0x1) Information (4)

Die folgende Tabelle zeigt die Ereignisinformationen an:

Ereignis Ereignis-ID Wird ausgelöst, wenn
DecreaseMemoryPressure 201 Arbeitsspeicherauslastung wurde verringert.

Die folgende Tabelle zeigt die Ereignisdaten an:

Feldname Datentyp BESCHREIBUNG
BytesFreed win:UInt32 Freigegebene Bytes.
ClrInstanceID win:UInt16 Eindeutige ID für die Instanz von CoreCLR.

GCMarkWithType-Ereignis

Die folgende Tabelle zeigt das Schlüsselwort und die Ebene an:

Schlüsselwort zum Auslösen des Ereignisses Ebene
GCKeyword (0x1) Information (4)

Die folgende Tabelle zeigt die Ereignisinformationen an:

Ereignis Ereignis-ID Wird ausgelöst, wenn
GCMarkWithType 202 Ein GC-Stamm wurde während der GC-Markierungsphase gekennzeichnet.

Die folgende Tabelle zeigt die Ereignisdaten an:

Feldname Datentyp BESCHREIBUNG
HeapNum win:UInt32 Die Heapnummer.
ClrInstanceID win:UInt16 Eindeutige ID für die Instanz von CoreCLR.
Type win:UInt32 Der GC-Stammtyp.

0x0: Stapel

0x1: Finalizer

0x2: Handle

0x3: Älter

0x4: SizedRef

0x5: Überlauf

Bytes win:UInt64 Die Anzahl von markierten Bytes.

GCJoin_V2-Ereignis

Die folgende Tabelle zeigt das Schlüsselwort und die Ebene an:

Schlüsselwort zum Auslösen des Ereignisses Ebene
GCKeyword (0x1) Ausführlich (5)

Die folgende Tabelle zeigt die Ereignisinformationen an:

Ereignis Ereignis-ID Wird ausgelöst, wenn
GCJoin_V2 203 Ein mit einem GC verbundener Thread.

Die folgende Tabelle zeigt die Ereignisdaten an:

Feldname Datentyp BESCHREIBUNG
Heap win:UInt32 Die Heapnummer
JoinTime win:UInt32 Gibt an, ob dieses Ereignis am Anfang eines Joins oder Endes eines Joins ausgelöst wird (0x0 für Join-Start, 0x1 für Join-Ende)
JoinType win:UInt32 Der Join-Typ.

0x0: Letzter Join

0x1: Join

0x2: Neustart

0x3: Erstes Umkehren eines Joins

0x4: Umkehren eines Joins

ClrInstanceID win:UInt16 Eindeutige ID für die Instanz von CoreCLR.