Garbage Collection-ETW-Ereignisse

Diese Ereignisse sammeln Informationen, die die Garbage Collection betreffen. Sie helfen beim Analysieren und Debuggen, einschließlich der Ermittlung, wie oft die Garbage Collection durchgeführt wurde, wie viel Arbeitsspeicher während der Garbage Collection freigegeben wurde usw.

Diese Kategorie umfasst die folgenden Ereignisse:

GCStart_V1-Ereignis

Die folgende Tabelle zeigt das Schlüsselwort und die Ebene an. Weitere Informationen finden Sie im Artikel zu CLR-ETW-Schlüsselwörtern und -Ebenen.

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
Anzahl win:UInt32 Die N-te Garbage Collection.
Tiefe 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 – Wenig Arbeitsspeicher

0x3 – Leer.

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

0x5 – Nicht genug Speicherplatz (für kleinen Objektheap).

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

0x7 – Induziert, aber nicht als blockierend erzwungen.

0x8 - Belastungstest.

0x9 - Der Finalizerthread hat beobachtet, dass sich der Prozess in wenig Arbeitsspeicher befindet und eine GC induziert.

0x10 - Benutzercode hat GC induziert und als Komprimierungs-GC angefordert.
type win:UInt32 0x0 – Blockieren der Garbage Collection außerhalb der Garbage Collection im Hintergrund aufgetreten.

0x1 – Garbage Collection im Hintergrund.

0x2 – Blockieren der Garbage Collection während der Garbage Collection im Hintergrund aufgetreten.
ClrInstanceID win:UInt16 Eindeutige ID für die Instanz von CLR oder 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
Anzahl win:UInt32 Die N-te Garbage Collection.
Tiefe win:UInt32 Die Generation, die erfasst wurde.
ClrInstanceID win:UInt16 Eindeutige ID für die Instanz von CLR oder CoreCLR.

GCHeapStats_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 BESCHREIBUNG
GCHeapStats_V1 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 CLR oder 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 CLR oder 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
Adresse 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 CLR oder 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
Adresse win:UInt64 Die Adresse des Segments.
ClrInstanceID win:UInt16 Eindeutige ID für die Instanz von CLR oder 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.

Keine Ereignisdaten.

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.

Keine Ereignisdaten.

GCSuspendEE_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
GCSuspendEE_V1 9 Die Unterbrechung der Ausführungs-Engine für die Garbage Collection gestartet wurde.

Die folgende Tabelle zeigt die Ereignisdaten an:

Feldname Datentyp Beschreibung
Grund win:UInt16 0x0 – Andere.

0x1 – Garbage Collection.

0x2 – Herunterfahren der Anwendungsdomäne.

0x3 – Codepitching.

0x4 – Herunterfahren.

0x5 – Debugger.

0x6 – Vorbereitung auf Garbage Collection.
Anzahl win:UInt32 Die Anzahl der GCs zu diesem Zeitpunkt. Normalerweise würde Ihnen danach ein nachfolgender GC-Start angezeigt werden. Diese Anzahl würde dabei um 1 erhöht werden, da der GC-Index während der Garbage Collection erhöht wird.
ClrInstanceID win:UInt16 Eindeutige ID für die Instanz von CLR oder CoreCLR.

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.

Keine Ereignisdaten.

GCAllocationTick_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
GCAllocationTick_V2 10 Jedes Mal, wenn ca. 100 KB pro Objekt heap zugeordnet werden. Das heißt, SOH, LOH und POH sammeln ihre zugeordneten Bytes separat an. In Server GC erfolgt dies pro Heap.

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).
0x2 - Angeheftete Objektzuordnung (Zuordnung ist in angeheftetem Objekthap).
ClrInstanceID win:UInt16 Eindeutige ID für die Instanz von CLR oder CoreCLR.
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.
TypName 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.

GCAllocationTick_V3-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
GCAllocationTick_V2 10 Jedes Mal, wenn ca. 100 KB pro Objekt heap zugeordnet werden. Das heißt, SOH, LOH und POH sammeln ihre zugeordneten Bytes separat an. In Server GC erfolgt dies pro Heap.

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).
0x2 - Angeheftete Objektzuordnung (Zuordnung ist in angeheftetem Objekthap).
ClrInstanceID win:UInt16 Eindeutige ID für die Instanz von CLR oder CoreCLR.
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.
TypName 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.
Adresse win:Pointer Die Adresse des zuletzt zugeordneten Objekts.

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.

Keine Ereignisdaten.

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
Anzahl win:UInt32 Die Anzahl der ausgeführten Finalizer.
ClrInstanceID win:UInt16 Eindeutige ID für die Instanz von CLR oder 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.

Keine Ereignisdaten.

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.

Keine Ereignisdaten.

Siehe auch