Freigeben über


ETW-Ereignisse der Garbage Collection

Diese 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.

Diese Kategorie besteht aus den folgenden Ereignissen:

GCStart_V1-Ereignis

Die folgende Tabelle zeigt das Schlüsselwort und die Ebene. Weitere Informationen finden Sie unter CLR ETW Keywords and Levels.

Schlüsselwort zum Auslösen des Ereignisses Niveau
GCKeyword (0x1) Informational (4)

Die folgende Tabelle zeigt die Ereignisinformationen:

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

Die folgende Tabelle zeigt die Ereignisdaten:

Flurname Datentyp Beschreibung
Zählen win:UInt32 Die nder Garbage Collection.
Tiefe win:UInt32 Die Generation, die gesammelt wird.
Grund win:UInt32 Warum die Garbage Collection ausgelöst wurde:

0x0 – Zuweisung kleiner Objekte

0x1 - Induziert.

0x2 – Geringer Arbeitsspeicher.

0x3 - Leer.

0x4 – Heapzuweisung für große Objekte.

0x5 - Leerraum (für kleine Objekthaps).

0x6 – Leerraum (für große Objekthäufige Heap).

0x7 - Induziert, aber nicht als Blockierung erzwungen.

0x8 - Stresstests.

0x9 - Der Finalizerthread beobachtet, dass der Prozess in geringem Arbeitsspeicher liegt und eine GC induziert.

0x10 - Benutzercode induzierte GC und fordert sie auf, eine komprimierte GC zu sein.
Art win:UInt32 0x0 : Das Blockieren der Garbage Collection ist außerhalb der Garbage Collection im Hintergrund aufgetreten.

0x1 – Garbage Collection im Hintergrund.

0x2 – Das Blockieren der Garbage Collection ist 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:

Schlüsselwort zum Auslösen des Ereignisses Niveau
GCKeyword (0x1) Informational (4)

Die folgende Tabelle zeigt die Ereignisinformationen:

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

Die folgende Tabelle zeigt die Ereignisdaten:

Flurname Datentyp Beschreibung
Zählen win:UInt32 Die nder Garbage Collection.
Tiefe win:UInt32 Die Generation, die gesammelt 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:

Schlüsselwort zum Auslösen des Ereignisses Niveau
GCKeyword (0x1) Informational (4)

Die folgende Tabelle zeigt die Ereignisinformationen:

Ereignis Ereignis-ID Beschreibung
GCHeapStats_V1 4 Zeigt die Heap-Statistiken am Ende jeder Garbage Collection an.

Die folgende Tabelle zeigt die Ereignisdaten:

Flurname Datentyp Beschreibung
GenerationSize0 win:UInt64 Die Größe des Speichers der Generation 0 in Bytes.
TotalPromotedSize0 win:UInt64 Die Anzahl der Bytes, die von Generation 0 auf Generation 1 heraufgestuft werden.
GenerationSize1 win:UInt64 Die Größe des Speichers der Generation 1 in Bytes.
TotalPromotedSize1 win:UInt64 Die Anzahl der Bytes, die von generation 1 auf Generation 2 heraufgestuft werden.
GenerationSize2 win:UInt64 Die Größe des Speichers der Generation 2 in Bytes.
TotalPromotedSize2 win:UInt64 Die Anzahl der Bytes, die nach der letzten Sammlung in Generation 2 überlebt haben.
GenerationSize3 win:UInt64 Die Größe des Heaps für große Objekte in Byte.
TotalPromotedSize3 win:UInt64 Die Anzahl der Bytes, die im Heap des großen Objekts nach der letzten Auflistung überlebt haben.
FinalizationPromotedSize win:UInt64 Die Gesamtgröße der Objekte, die für die Fertigstellung bereit sind, in Byte.
FinalizationPromotedCount win:UInt64 Die Anzahl der Objekte, die für die Fertigstellung bereit sind.
PinnedObjectCount win:UInt32 Die Anzahl der angehefteten (nichtovablen) 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:

Schlüsselwort zum Auslösen des Ereignisses Niveau
GCKeyword (0x1) Informational (4)

Die folgende Tabelle zeigt die Ereignisinformationen:

Ereignis Ereignis-ID Beschreibung
GCHeapStats_V2 4 Zeigt die Heap-Statistiken am Ende jeder Garbage Collection an.

Die folgende Tabelle zeigt die Ereignisdaten:

Flurname Datentyp Beschreibung
GenerationSize0 win:UInt64 Die Größe des Speichers der Generation 0 in Bytes.
TotalPromotedSize0 win:UInt64 Die Anzahl der Bytes, die von Generation 0 auf Generation 1 heraufgestuft werden.
GenerationSize1 win:UInt64 Die Größe des Speichers der Generation 1 in Bytes.
TotalPromotedSize1 win:UInt64 Die Anzahl der Bytes, die von generation 1 auf Generation 2 heraufgestuft werden.
GenerationSize2 win:UInt64 Die Größe des Speichers der Generation 2 in Bytes.
TotalPromotedSize2 win:UInt64 Die Anzahl der Bytes, die nach der letzten Sammlung in Generation 2 überlebt haben.
GenerationSize3 win:UInt64 Die Größe des Heaps für große Objekte in Byte.
TotalPromotedSize3 win:UInt64 Die Anzahl der Bytes, die im Heap des großen Objekts nach der letzten Auflistung überlebt haben.
FinalizationPromotedSize win:UInt64 Die Gesamtgröße der Objekte, die für die Fertigstellung bereit sind, in Byte.
FinalizationPromotedCount win:UInt64 Die Anzahl der Objekte, die für die Fertigstellung bereit sind.
PinnedObjectCount win:UInt32 Die Anzahl der angehefteten (nichtovablen) 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 Objekt-Heaps in Bytes.
TotalPromotedSize4 win:UInt64 Die Anzahl der Bytes, die im Heap des angehefteten Objekts nach der letzten Auflistung überlebt haben.

GCCreateSegment_V1-Ereignis

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

Schlüsselwort zum Auslösen des Ereignisses Niveau
GCKeyword (0x1) Informational (4)

Die folgende Tabelle zeigt die Ereignisinformationen:

Ereignis Ereignis-ID Wird ausgelöst, wenn
GCCreateSegment_V1 5 Es wurde ein neues Garbage Collection-Segment erstellt. Wenn die Ablaufverfolgung für einen bereits ausgeführten Prozess aktiviert ist, wird dieses Ereignis für jedes vorhandene Segment ausgelöst.

Die folgende Tabelle zeigt die Ereignisdaten:

Flurname Datentyp Beschreibung
Adresse win:UInt64 Die Adresse des Segments.
Größe win:UInt64 Die Größe des Segments.
Art win:UInt32 0x0 – Heap für kleine Objekte.

0x1 – Heap für große Objekte.

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

Beachten Sie, dass die größe der vom Garbage Collector zugewiesenen Segmente implementierungsspezifisch ist und jederzeit geändert werden kann, einschließlich in regelmäßigen Updates. Ihre App sollte niemals annahmen, ob sie von einer bestimmten Segmentgröße abhängig sind, noch sollten Sie versuchen, die für Segmentzuordnungen verfügbare Speichermenge zu konfigurieren.

GCFreeSegment_V1-Ereignis

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

Schlüsselwort zum Auslösen des Ereignisses Niveau
GCKeyword (0x1) Informational (4)

Die folgende Tabelle zeigt die Ereignisinformationen:

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

Die folgende Tabelle zeigt die Ereignisdaten:

Flurname 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:

Schlüsselwort zum Auslösen des Ereignisses Niveau
GCKeyword (0x1) Informational (4)

Die folgende Tabelle zeigt die Ereignisinformationen:

Ereignis Ereignis-ID Wird ausgelöst, wenn
GCRestartEEBegin_V1 7 Die Wiederaufnahme der Unterbrechung der Laufzeit für gemeinsame Sprachen hat begonnen.

Keine Ereignisdaten.

GCRestartEEEnd_V1-Ereignis

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

Schlüsselwort zum Auslösen des Ereignisses Niveau
GCKeyword (0x1) Informational (4)

Die folgende Tabelle zeigt die Ereignisinformationen:

Ereignis Ereignis-ID Wird ausgelöst, wenn
GCRestartEEEnd_V1 3 Die Fortsetzung der Unterbrechung der Gemeinsamen Sprachlaufzeit wurde beendet.

Keine Ereignisdaten.

GCSuspendEE_V1-Ereignis

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

Schlüsselwort zum Auslösen des Ereignisses Niveau
GCKeyword (0x1) Informational (4)

Die folgende Tabelle zeigt die Ereignisinformationen:

Ereignis Ereignis-ID Wird ausgelöst, wenn
GCSuspendEE_V1 9 Beginn des Anhaltens des Ausführungsmoduls für die Garbage Collection.

Die folgende Tabelle zeigt die Ereignisdaten:

Flurname Datentyp Beschreibung
Grund win:UInt16 0x0 - Andere.

0x1 – Garbage Collection.

0x2 – Herunterfahren der Anwendungsdomäne.

0x3 – Codeabstand.

0x4 – Herunterfahren.

0x5 – Debugger.

0x6 – Vorbereitung für die Garbage Collection.
Zählen win:UInt32 Die GC-Anzahl zur Zeit. In der Regel würden Sie ein nachfolgendes GC Start-Ereignis danach sehen, und die Anzahl wäre diese Anzahl + 1, da wir den GC-Index während einer Garbage Collection erhöhen.
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:

Schlüsselwort zum Auslösen des Ereignisses Niveau
GCKeyword (0x1) Informational (4)

Die folgende Tabelle zeigt die Ereignisinformationen:

Ereignis Ereignis-ID Wird ausgelöst, wenn
GCSuspendEEEnd_V1 8 Ende der Aussetzung des Ausführungsmoduls für die Garbage Collection.

Keine Ereignisdaten.

GCAllocationTick_V2-Ereignis

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

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

Die folgende Tabelle zeigt die Ereignisinformationen:

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:

Flurname Datentyp Beschreibung
AllocationAmount win:UInt32 Die Zuordnungsgröße in Byte. Dieser Wert ist für Zuordnungen genau, die kleiner als die Länge eines ULONG (4.294.967.295 Bytes) sind. 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 befindet sich im Heap für kleine Objekte).
0x1 - Zuordnung großer Objekte (Zuordnung befindet sich im Heap für große Objekte).
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 Byte. Dieser Wert ist für sehr große Zuordnungen genau.
TypeId win:Pointer Die Adresse der MethodTable. Wenn während dieses Ereignisses mehrere Objekttypen zugeordnet wurden, ist dies die Adresse der MethodTable, die dem letzten zugeordneten Objekt entspricht (das Objekt, das dazu führte, dass der Schwellenwert von 100 KB überschritten wurde).
TypeName win:UnicodeString Der Name des typs, der zugewiesen wurde. Wenn während dieses Ereignisses mehrere Objekttypen zugeordnet wurden, ist dies der Typ des zuletzt zugewiesenen Objekts (das Objekt, das dazu führte, dass der Schwellenwert von 100 KB überschritten wurde).
HeapIndex win:UInt32 Der Heap, in dem das Objekt zugewiesen wurde. Dieser Wert ist 0 (null), wenn er mit der Garbage Collection der Arbeitsstation ausgeführt wird.

GCAllocationTick_V3-Ereignis

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

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

Die folgende Tabelle zeigt die Ereignisinformationen:

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:

Flurname Datentyp Beschreibung
AllocationAmount win:UInt32 Die Zuordnungsgröße in Byte. Dieser Wert ist für Zuordnungen genau, die kleiner als die Länge eines ULONG (4.294.967.295 Bytes) sind. 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 befindet sich im Heap für kleine Objekte).
0x1 - Zuordnung großer Objekte (Zuordnung befindet sich im Heap für große Objekte).
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 Byte. Dieser Wert ist für sehr große Zuordnungen genau.
TypeId win:Pointer Die Adresse der MethodTable. Wenn während dieses Ereignisses mehrere Objekttypen zugeordnet wurden, ist dies die Adresse der MethodTable, die dem letzten zugeordneten Objekt entspricht (das Objekt, das dazu führte, dass der Schwellenwert von 100 KB überschritten wurde).
TypeName win:UnicodeString Der Name des typs, der zugewiesen wurde. Wenn während dieses Ereignisses mehrere Objekttypen zugeordnet wurden, ist dies der Typ des zuletzt zugewiesenen Objekts (das Objekt, das dazu führte, dass der Schwellenwert von 100 KB überschritten wurde).
HeapIndex win:UInt32 Der Heap, in dem das Objekt zugewiesen wurde. Dieser Wert ist 0 (null), wenn er mit der Garbage Collection der Arbeitsstation ausgeführt wird.
Adresse win:Pointer Die Adresse des zuletzt zugewiesenen Objekts.

GCFinalizersBegin_V1-Ereignis

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

Schlüsselwort zum Auslösen des Ereignisses Niveau
GCKeyword (0x1) Informational (4)

Die folgende Tabelle zeigt die Ereignisinformationen:

Ereignis Ereignis-ID Wird ausgelöst, wenn
GCFinalizersBegin_V1 14 Der Beginn der Ausführung von Finalizern.

Keine Ereignisdaten.

GCFinalizersEnd_V1-Ereignis

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

Schlüsselwort zum Auslösen des Ereignisses Niveau
GCKeyword (0x1) Informational (4)

Die folgende Tabelle zeigt die Ereignisinformationen:

Ereignis Ereignis-ID Wird ausgelöst, wenn
GCFinalizersEnd_V1 13 Das Ende der Ausführung von Finalizern.

Die folgende Tabelle zeigt die Ereignisdaten:

Flurname Datentyp Beschreibung
Zählen win:UInt32 Die Anzahl der Finalizer, die ausgeführt wurden.
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:

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

Die folgende Tabelle zeigt die Ereignisinformationen:

Ereignis Ereignis-ID Wird ausgelöst, wenn
GCCreateConcurrentThread_V1 11 Gleichzeitiger Garbage Collection-Thread wurde erstellt.

Keine Ereignisdaten.

GCTerminateConcurrentThread_V1-Ereignis

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

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

Die folgende Tabelle zeigt die Ereignisinformationen:

Ereignis Ereignis-ID Wird ausgelöst, wenn
GCTerminateConcurrentThread_V1 12 Gleichzeitiger Garbage Collection-Thread wurde beendet.

Keine Ereignisdaten.

Siehe auch