Události Trasování událostí pro Windows uvolnění paměti

Tyto události shromažďují informace týkající se uvolňování paměti. Pomáhají při diagnostice a ladění, včetně určení, kolikrát bylo provedeno uvolňování paměti, kolik paměti bylo uvolněno během uvolňování paměti atd.

Tato kategorie se skládá z následujících událostí:

událost GCStart_V1

Následující tabulka ukazuje klíčové slovo a úroveň. Další informace naleznete v tématu CLR ETW klíčová slova a úrovně.

Klíčové slovo pro vyvolání události Level
GCKeyword (0x1) Informační (4)

Následující tabulka obsahuje informace o události:

Událost ID události Vyvolání při
GCStart_V1 0 Spustilo se uvolňování paměti.

V následující tabulce jsou uvedena data události:

Název pole Datový typ Popis
Count win:UInt32 N. uvolňování paměti.
Hloubka win:UInt32 Generace, která se shromažďuje.
Důvod win:UInt32 Proč se aktivovalo uvolňování paměti:

0x0 – přidělení haldy malého objektu

0x1 - vyvolána.

0x2 – nedostatek paměti.

0x3 – prázdné.

0x4 – přidělení haldy velkého objektu

0x5 – nedostatek místa (pro malou haldu objektu).

0x6 – nedostatek místa (pro haldu velkého objektu).

0x7 – vyvolána, ale není vynucena jako blokování.

0x8 - zátěžové testování.

0x9 - Vlákno finalizátoru pozorované, že proces je v nedostatku paměti a vyvolá GC.

0x10 - Uživatelský kód indukovaný GC a požádal ho, aby byl komprimující GC.
Typ win:UInt32 0x0 – Blokování uvolňování paměti došlo mimo uvolňování paměti na pozadí.

0x1 – uvolňování paměti na pozadí

0x2 – Blokování uvolňování paměti došlo během uvolňování paměti na pozadí.
ClrInstanceID win:UInt16 Jedinečné ID instance CLR nebo CoreCLR.

událost GCEnd_V1

Následující tabulka ukazuje klíčové slovo a úroveň:

Klíčové slovo pro vyvolání události Level
GCKeyword (0x1) Informační (4)

Následující tabulka obsahuje informace o události:

Událost ID události Vyvolání při
GCEnd_V1 2 Uvolňování paměti skončilo.

V následující tabulce jsou uvedena data události:

Název pole Datový typ Popis
Count win:UInt32 N. uvolňování paměti.
Hloubka win:UInt32 Generace, která byla shromážděna.
ClrInstanceID win:UInt16 Jedinečné ID instance CLR nebo CoreCLR.

událost GCHeapStats_V1

Následující tabulka ukazuje klíčové slovo a úroveň:

Klíčové slovo pro vyvolání události Level
GCKeyword (0x1) Informační (4)

Následující tabulka obsahuje informace o události:

Událost ID události Popis
GCHeapStats_V1 4 Zobrazuje statistiku haldy na konci každé uvolňování paměti.

V následující tabulce jsou uvedena data události:

Název pole Datový typ Popis
GenerationSize0 win:UInt64 Velikost paměti generace 0 v bajtech.
TotalPromotedSize0 win:UInt64 Počet bajtů, které jsou povýšeny z generace 0 na generaci 1.
GenerationSize1 win:UInt64 Velikost paměti generace 1 v bajtech.
TotalPromotedSize1 win:UInt64 Počet bajtů, které jsou povýšeny z generace 1 na generaci 2.
GenerationSize2 win:UInt64 Velikost paměti generace 2 v bajtech.
TotalPromotedSize2 win:UInt64 Počet bajtů, které přežily v generaci 2 po poslední kolekci.
GenerationSize3 win:UInt64 Velikost haldy velkého objektu v bajtech.
TotalPromotedSize3 win:UInt64 Počet bajtů, které přežily ve velké haldě objektu po poslední kolekci.
FinalizacePromotedSize win:UInt64 Celková velikost objektů, které jsou připravené k dokončení, v bajtech.
FinalizationPromotedCount win:UInt64 Počet objektů, které jsou připravené k dokončení.
PinnedObjectCount win:UInt32 Počet připnutých (nepotřebných) objektů.
SinkBlockCount win:UInt32 Počet využitých bloků synchronizace.
GCHandleCount win:UInt32 Počet popisovačů uvolňování paměti, které se používají.
ClrInstanceID win:UInt16 Jedinečné ID instance CLR nebo CoreCLR.

událost GCHeapStats_V2

Následující tabulka ukazuje klíčové slovo a úroveň:

Klíčové slovo pro vyvolání události Level
GCKeyword (0x1) Informační (4)

Následující tabulka obsahuje informace o události:

Událost ID události Popis
GCHeapStats_V2 4 Zobrazuje statistiku haldy na konci každé uvolňování paměti.

V následující tabulce jsou uvedena data události:

Název pole Datový typ Popis
GenerationSize0 win:UInt64 Velikost paměti generace 0 v bajtech.
TotalPromotedSize0 win:UInt64 Počet bajtů, které jsou povýšeny z generace 0 na generaci 1.
GenerationSize1 win:UInt64 Velikost paměti generace 1 v bajtech.
TotalPromotedSize1 win:UInt64 Počet bajtů, které jsou povýšeny z generace 1 na generaci 2.
GenerationSize2 win:UInt64 Velikost paměti generace 2 v bajtech.
TotalPromotedSize2 win:UInt64 Počet bajtů, které přežily v generaci 2 po poslední kolekci.
GenerationSize3 win:UInt64 Velikost haldy velkého objektu v bajtech.
TotalPromotedSize3 win:UInt64 Počet bajtů, které přežily ve velké haldě objektu po poslední kolekci.
FinalizacePromotedSize win:UInt64 Celková velikost objektů, které jsou připravené k dokončení, v bajtech.
FinalizationPromotedCount win:UInt64 Počet objektů, které jsou připravené k dokončení.
PinnedObjectCount win:UInt32 Počet připnutých (nepotřebných) objektů.
SinkBlockCount win:UInt32 Počet využitých bloků synchronizace.
GCHandleCount win:UInt32 Počet popisovačů uvolňování paměti, které se používají.
ClrInstanceID win:UInt16 Jedinečné ID instance CLR nebo CoreCLR.
GenerationSize4 win:UInt64 Velikost haldy připnutého objektu v bajtech.
TotalPromotedSize4 win:UInt64 Počet bajtů, které přežily v haldě připnutého objektu po poslední kolekci.

událost GCCreateSegment_V1

Následující tabulka ukazuje klíčové slovo a úroveň:

Klíčové slovo pro vyvolání události Level
GCKeyword (0x1) Informační (4)

Následující tabulka obsahuje informace o události:

Událost ID události Vyvolání při
GCCreateSegment_V1 5 Byl vytvořen nový segment uvolňování paměti. Kromě toho, pokud je trasování povolené u již spuštěného procesu, je tato událost vyvolána pro každý existující segment.

V následující tabulce jsou uvedena data události:

Název pole Datový typ Popis
Adresa win:UInt64 Adresa segmentu.
Velikost win:UInt64 Velikost segmentu.
Typ win:UInt32 0x0 – malá halda objektu.

0x1 – velká halda objektu.

0x2 – halda jen pro čtení.
ClrInstanceID win:UInt16 Jedinečné ID instance CLR nebo CoreCLR.

Všimněte si, že velikost segmentů přidělených systémem uvolňování paměti je specifická pro implementaci a může se kdykoli změnit, včetně pravidelných aktualizací. Vaše aplikace by nikdy neměla provádět předpoklady týkající se konkrétní velikosti segmentu ani záviset na ní, ani by se neměla pokoušet konfigurovat množství paměti dostupné pro přidělení segmentů.

událost GCFreeSegment_V1

Následující tabulka ukazuje klíčové slovo a úroveň:

Klíčové slovo pro vyvolání události Level
GCKeyword (0x1) Informační (4)

Následující tabulka obsahuje informace o události:

Událost ID události Vyvolání při
GCFreeSegment_V1 6 Byl vydán segment uvolňování paměti.

V následující tabulce jsou uvedena data události:

Název pole Datový typ Popis
Adresa win:UInt64 Adresa segmentu.
ClrInstanceID win:UInt16 Jedinečné ID instance CLR nebo CoreCLR.

událost GCRestartEEBegin_V1

Následující tabulka ukazuje klíčové slovo a úroveň:

Klíčové slovo pro vyvolání události Level
GCKeyword (0x1) Informační (4)

Následující tabulka obsahuje informace o události:

Událost ID události Vyvolání při
GCRestartEEBegin_V1 7 Zahájilo se obnovení z pozastavení modulu CLR (Common Language Runtime).

Žádná data událostí.

událost GCRestartEEEnd_V1

Následující tabulka ukazuje klíčové slovo a úroveň:

Klíčové slovo pro vyvolání události Level
GCKeyword (0x1) Informační (4)

Následující tabulka obsahuje informace o události:

Událost ID události Vyvolání při
GCRestartEEEnd_V1 3 Obnovení z pozastavení modulu CLR (Common Language Runtime) skončilo.

Žádná data událostí.

událost GCSuspendEE_V1

Následující tabulka ukazuje klíčové slovo a úroveň:

Klíčové slovo pro vyvolání události Level
GCKeyword (0x1) Informační (4)

Následující tabulka obsahuje informace o události:

Událost ID události Vyvolání při
GCSuspendEE_V1 9 Začátek pozastavení prováděcího modulu pro uvolňování paměti.

V následující tabulce jsou uvedena data události:

Název pole Datový typ Popis
Důvod win:UInt16 0x0 - jiné.

0x1 – uvolňování paměti.

0x2 – vypnutí domény aplikace

0x3 - rozhazování kódu.

0x4 – Vypnutí.

0x5 – ladicí program.

0x6 – příprava na uvolňování paměti.
Počet win:UInt32 Počet GC v době. Obvykle by se po tomto stavu zobrazila další událost zahájení uvolňování paměti a jeho počet by byl tento Počet + 1, protože během uvolňování paměti zvýšíme index uvolňování paměti.
ClrInstanceID win:UInt16 Jedinečné ID instance CLR nebo CoreCLR.

událost GCSuspendEEEnd_V1

Následující tabulka ukazuje klíčové slovo a úroveň:

Klíčové slovo pro vyvolání události Level
GCKeyword (0x1) Informační (4)

Následující tabulka obsahuje informace o události:

Událost ID události Vyvolání při
GCSuspendEEEnd_V1 8 Konec pozastavení prováděcího modulu pro uvolňování paměti.

Žádná data událostí.

událost GCAllocationTick_V2

Následující tabulka ukazuje klíčové slovo a úroveň:

Klíčové slovo pro vyvolání události Level
GCKeyword (0x1) Informační (4)

Následující tabulka obsahuje informace o události:

Událost ID události Vyvolání při
GCAllocationTick_V2 10 Pokaždé, když je přiděleno přibližně 100 kB na haldu objektu. To znamená, SOH, LOH a POH hromadí své přidělené bajty samostatně. V serveru GC se to provádí na haldu.

V následující tabulce jsou uvedena data události:

Název pole Datový typ Popis
AllocationAmount win:UInt32 Velikost přidělení vbajch Tato hodnota je přesná pro přidělení, která jsou menší než délka ULONG (4 294 967 295 bajtů). Pokud je přidělení větší, obsahuje toto pole zkrácenou hodnotu. Používá se AllocationAmount64 pro velmi velké přidělení.
AllocationKind win:UInt32 0x0 – přidělení malého objektu (přidělení je v malé haldě objektu).
0x1 – přidělení velkého objektu (přidělení je v haldě velkého objektu).
0x2 – Přidělení připnutého objektu (přidělení je v haldě připnutého objektu).
ClrInstanceID win:UInt16 Jedinečné ID instance CLR nebo CoreCLR.
AllocationAmount64 win:UInt64 Velikost přidělení vbajch Tato hodnota je přesná pro velmi velké přidělení.
Typeid win:Pointer Adresa MethodTable. Pokud je během této události přiděleno několik typů objektů, jedná se o adresu MethodTable odpovídající poslednímu přidělenému objektu (objekt, který způsobil překročení prahové hodnoty 100 kB).
TypeName win:UnicodeString Název přiděleného typu. Pokud je během této události přiděleno několik typů objektů, jedná se o typ posledního přiděleného objektu (objekt, který způsobil překročení prahové hodnoty 100 kB).
HeapIndex win:UInt32 Halda, ve které byl objekt přidělen. Tato hodnota je 0 (nula) při spuštění s uvolňováním paměti pracovní stanice.

událost GCAllocationTick_V3

Následující tabulka ukazuje klíčové slovo a úroveň:

Klíčové slovo pro vyvolání události Level
GCKeyword (0x1) Informační (4)

Následující tabulka obsahuje informace o události:

Událost ID události Vyvolání při
GCAllocationTick_V2 10 Pokaždé, když je přiděleno přibližně 100 kB na haldu objektu. To znamená, SOH, LOH a POH hromadí své přidělené bajty samostatně. V serveru GC se to provádí na haldu.

V následující tabulce jsou uvedena data události:

Název pole Datový typ Popis
AllocationAmount win:UInt32 Velikost přidělení vbajch Tato hodnota je přesná pro přidělení, která jsou menší než délka ULONG (4 294 967 295 bajtů). Pokud je přidělení větší, obsahuje toto pole zkrácenou hodnotu. Používá se AllocationAmount64 pro velmi velké přidělení.
AllocationKind win:UInt32 0x0 – přidělení malého objektu (přidělení je v malé haldě objektu).
0x1 – přidělení velkého objektu (přidělení je v haldě velkého objektu).
0x2 – Přidělení připnutého objektu (přidělení je v haldě připnutého objektu).
ClrInstanceID win:UInt16 Jedinečné ID instance CLR nebo CoreCLR.
AllocationAmount64 win:UInt64 Velikost přidělení vbajch Tato hodnota je přesná pro velmi velké přidělení.
Typeid win:Pointer Adresa MethodTable. Pokud je během této události přiděleno několik typů objektů, jedná se o adresu MethodTable odpovídající poslednímu přidělenému objektu (objekt, který způsobil překročení prahové hodnoty 100 kB).
TypeName win:UnicodeString Název přiděleného typu. Pokud je během této události přiděleno několik typů objektů, jedná se o typ posledního přiděleného objektu (objekt, který způsobil překročení prahové hodnoty 100 kB).
HeapIndex win:UInt32 Halda, ve které byl objekt přidělen. Tato hodnota je 0 (nula) při spuštění s uvolňováním paměti pracovní stanice.
Adresa win:Pointer Adresa posledního přiděleného objektu.

událost GCFinalizersBegin_V1

Následující tabulka ukazuje klíčové slovo a úroveň:

Klíčové slovo pro vyvolání události Level
GCKeyword (0x1) Informační (4)

Následující tabulka obsahuje informace o události:

Událost ID události Vyvolání při
GCFinalizersBegin_V1 14 Začátek spuštění finalizačních metod.

Žádná data událostí.

událost GCFinalizersEnd_V1

Následující tabulka ukazuje klíčové slovo a úroveň:

Klíčové slovo pro vyvolání události Level
GCKeyword (0x1) Informační (4)

Následující tabulka obsahuje informace o události:

Událost ID události Vyvolání při
GCFinalizersEnd_V1 13 Konec běhu finalizátorů.

V následující tabulce jsou uvedena data události:

Název pole Datový typ Popis
Count win:UInt32 Počet spuštěných finalizátorů.
ClrInstanceID win:UInt16 Jedinečné ID instance CLR nebo CoreCLR.

událost GCCreateConcurrentThread_V1

Následující tabulka ukazuje klíčové slovo a úroveň:

Klíčové slovo pro vyvolání události Level
GCKeyword (0x1) Informační (4)
ThreadingKeyword (0x10000) Informační (4)

Následující tabulka obsahuje informace o události:

Událost ID události Vyvolání při
GCCreateConcurrentThread_V1 11 Bylo vytvořeno souběžné vlákno uvolňování paměti.

Žádná data událostí.

událost GCTerminateConcurrentThread_V1

Následující tabulka ukazuje klíčové slovo a úroveň:

Klíčové slovo pro vyvolání události Level
GCKeyword (0x1) Informační (4)
ThreadingKeyword (0x10000) Informační (4)

Následující tabulka obsahuje informace o události:

Událost ID události Vyvolání při
GCTerminateConcurrentThread_V1 12 Souběžné vlákno uvolňování paměti bylo ukončeno.

Žádná data událostí.

Viz také