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
- GCEnd_V1-Ereignis
- GCHeapStats_V1-Ereignis
- GCHeapStats_V2-Ereignis
- GCCreateSegment_V1-Ereignis
- GCFreeSegment_V1-Ereignis
- GCRestartEEBegin_V1-Ereignis
- GCRestartEEEnd_V1-Ereignis
- GCSuspendEE_V1-Ereignis
- GCSuspendEEEnd_V1-Ereignis
- GCAllocationTick_V2-Ereignis
- GCAllocationTick_V3-Ereignis
- GCFinalizersBegin_V1-Ereignis
- GCFinalizersEnd_V1-Ereignis
- GCCreateConcurrentThread_V1-Ereignis
- GCTerminateConcurrentThread_V1-Ereignis
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.