.NET 運行時間垃圾收集事件
本文所述的事件會收集與垃圾收集相關的資訊。 它們有助於診斷和偵錯,包括判斷垃圾收集執行次數、垃圾收集期間釋放多少記憶體等等。如需如何針對診斷目的使用這些事件的詳細資訊,請參閱 記錄和追蹤 .NET 應用程式。
GCStart_V2 事件
下表顯示 關鍵字和層級:
引發事件的關鍵詞 | 水準 |
---|---|
GCKeyword (0x1) |
資訊 (4) |
下表顯示事件資訊:
事件 | 事件標識碼 | 引發時機 |
---|---|---|
GCStart_V1 |
1 | 已啟動垃圾收集。 |
下表顯示事件資料:
功能變數名稱 | 數據類型 | 描述 |
---|---|---|
Count |
win:UInt32 |
n 個垃圾收集。 |
Depth |
win:UInt32 |
正在收集的世代。 |
Reason |
win:UInt32 |
為何觸發垃圾收集:0x0 - 小型物件堆積配置。0x1 - 誘發。0x2 - 記憶體不足。0x3 - 空白。0x4 - 大型物件堆積配置。0x5 - 空間不足(適用於小型物件堆積)。0x6 - 空間不足(適用於大型物件堆積)。0x7 - 誘發但未強制為封鎖。 |
Type |
win:UInt32 |
0x0 - 封鎖垃圾收集發生在背景垃圾收集之外。0x1 - 背景垃圾收集。0x2 - 在背景垃圾收集期間發生封鎖垃圾收集。 |
ClrInstanceID |
win:UInt16 | CoreCLR 實例的唯一標識符。 |
GCEnd_V1事件
下表顯示 關鍵字和層級:
引發事件的關鍵詞 | 水準 |
---|---|
GCKeyword (0x1) |
資訊 (4) |
下表顯示事件資訊:
事件 | 事件標識碼 | 引發時機 |
---|---|---|
GCEnd_V1 |
2 | 垃圾收集已結束。 |
下表顯示事件資料:
功能變數名稱 | 數據類型 | 描述 |
---|---|---|
Count |
win:UInt32 |
n 個垃圾收集。 |
Depth |
win:UInt32 |
收集的世代。 |
ClrInstanceID |
win:UInt16 | CoreCLR 實例的唯一標識符。 |
GCHeapStats_V2事件
下表顯示 關鍵字和層級:
引發事件的關鍵詞 | 水準 |
---|---|
GCKeyword (0x1) |
資訊 (4) |
下表顯示事件資訊:
事件 | 事件標識碼 | 描述 |
---|---|---|
GCHeapStats_V2 |
4 | 顯示每個垃圾收集結束時的堆積統計數據。 |
下表顯示事件資料:
功能變數名稱 | 數據類型 | 描述 |
---|---|---|
GenerationSize0 |
win:UInt64 |
層代 0 記憶體的大小,以位元組為單位。 |
TotalPromotedSize0 |
win:UInt64 |
從層代 0 升級至層代 1 的位元元組數目。 |
GenerationSize1 |
win:UInt64 |
第 1 代記憶體的大小,以位元組為單位。 |
TotalPromotedSize1 |
win:UInt64 |
從層代 1 升級至層代 2 的位元元組數目。 |
GenerationSize2 |
win:UInt64 |
第 2 代記憶體的大小,以位元組為單位。 |
TotalPromotedSize2 |
win:UInt64 |
在最後一個集合之後的第 2 代中倖存的位元組數目。 |
GenerationSize3 |
win:UInt64 |
大型物件堆積的大小,以位元組為單位。 |
TotalPromotedSize3 |
win:UInt64 |
最後一個集合之後大型物件堆積中倖存的位元組數目。 |
FinalizationPromotedSize |
win:UInt64 |
準備完成之物件的大小總計,以位元組為單位。 |
FinalizationPromotedCount |
win:UInt64 |
準備好進行最終處理的物件數目。 |
PinnedObjectCount |
win:UInt32 |
固定的 (無法移動) 物件數目。 |
SinkBlockCount |
win:UInt32 |
使用中的同步處理區塊數目。 |
GCHandleCount |
win:UInt32 |
使用中的垃圾收集句柄數目。 |
ClrInstanceID |
win:UInt16 |
CoreCLR 實例的唯一標識符。 |
GenerationSize4 |
win:UInt64 |
固定物件堆積的大小,以位元組為單位。 |
TotalPromotedSize4 |
win:UInt64 |
在最後一個集合之後釘選的物件堆積中倖存下來的位元組數目。 |
GCCreateSegment_V1事件
下表顯示 關鍵字和層級:
引發事件的關鍵詞 | 水準 |
---|---|
GCKeyword (0x1) |
資訊 (4) |
下表顯示事件資訊:
事件 | 事件標識碼 | 引發時機 |
---|---|---|
GCCreateSegment_V1 |
5 | 已建立新的垃圾收集區段。 此外,在已經執行的進程上啟用追蹤時,會針對每個現有的區段引發此事件。 |
下表顯示事件資料:
功能變數名稱 | 數據類型 | 描述 |
---|---|---|
Address |
win:UInt64 |
區段的位址。 |
Size |
win:UInt64 |
區段的大小。 |
Type |
win:UInt32 |
0x0 - 小型物件堆積。 0x1 - 大型物件堆積。 0x2 - 只讀堆積。 |
ClrInstanceID |
win:UInt16 |
CoreCLR 實例的唯一標識符。 |
請注意,垃圾收集行程所配置的區段大小是實作特定的,而且隨時可能會變更,包括定期更新。 您的應用程式絕對不應該假設或相依於特定區段大小,也不應該嘗試設定區段配置可用的記憶體數量。
GCFreeSegment_V1 事件
下表顯示 關鍵字和層級:
引發事件的關鍵詞 | 水準 |
---|---|
GCKeyword (0x1) |
資訊 (4) |
下表顯示事件資訊:
事件 | 事件標識碼 | 引發時機 |
---|---|---|
GCFreeSegment_V1 |
6 | 已釋放垃圾收集區段。 |
下表顯示事件資料:
功能變數名稱 | 數據類型 | 描述 |
---|---|---|
Address |
win:UInt64 |
區段的位址。 |
ClrInstanceID |
win:UInt16 |
CoreCLR 實例的唯一標識符。 |
GCRestartEEBegin_V1事件
下表顯示 關鍵字和層級:
引發事件的關鍵詞 | 水準 |
---|---|
GCKeyword (0x1) |
資訊 (4) |
下表顯示事件資訊:
事件 | 事件標識碼 | 引發時機 |
---|---|---|
GCRestartEEBegin_V1 |
7 | 從 Common Language Runtime 暫停恢復已開始。 |
此事件沒有任何事件數據。
GCRestartEEEnd_V1 事件
下表顯示 關鍵字和層級:
引發事件的關鍵詞 | 水準 |
---|---|
GCKeyword (0x1) |
資訊 (4) |
下表顯示事件資訊:
事件 | 事件標識碼 | 引發時機 |
---|---|---|
GCRestartEEEnd_V1 |
3 | 從 Common Language Runtime 暫停恢復已結束。 |
此事件沒有任何事件數據。
GCSuspendEEEnd_V1事件
下表顯示 關鍵字和層級:
引發事件的關鍵詞 | 水準 |
---|---|
GCKeyword (0x1) |
資訊 (4) |
下表顯示事件資訊:
事件 | 事件標識碼 | 引發時機 |
---|---|---|
GCSuspendEEEnd_V1 |
8 | 垃圾收集的執行引擎暫停結束。 |
此事件沒有任何事件數據。
GCSuspendEEBegin_V1事件
下表顯示 關鍵字和層級:
引發事件的關鍵詞 | 水準 |
---|---|
GCKeyword (0x1) |
資訊 (4) |
下表顯示事件資訊:
事件 | 事件標識碼 | 引發時機 |
---|---|---|
GCSuspendEEBegin_V1 |
9 | 開始暫停執行引擎以進行垃圾收集。 |
功能變數名稱 | 數據類型 | 描述 |
---|---|---|
Count |
win:UInt32 |
n 個垃圾收集。 |
Reason |
win:UInt32 |
EE 暫停的原因。0x0 :暫停其他專案0x1 :針對 GC 暫停。0x2 :暫停AppDomain關機。0x3 :暫停程式代碼投向。0x4 :暫停關機。0x5 :調試程序的暫停。0x6 :針對 GC 準備暫停。0x7 :調試程序掃掠的暫停 |
GCAllocationTick_V3 事件
下表顯示 關鍵字和層級:
引發事件的關鍵詞 | 水準 |
---|---|
GCKeyword (0x1) |
詳細資訊 (5) |
下表顯示事件資訊:
事件 | 事件標識碼 | 引發時機 |
---|---|---|
GCAllocationTick_V3 |
10 | 每次配置大約 100 KB 時。 |
下表顯示事件資料:
功能變數名稱 | 數據類型 | 描述 |
---|---|---|
AllocationAmount |
win:UInt32 |
配置大小,以位元組為單位。 此值適用於小於ULONG長度的配置(4,294,967,295個字節)。 如果配置更大,此欄位會包含截斷的值。 針對非常大的配置使用 AllocationAmount64 。 |
AllocationKind |
win:UInt32 |
0x0 - 小型物件配置(配置位於小型物件堆積中)。0x1 - 大型物件配置(配置位於大型物件堆積中)。 |
AllocationAmount64 |
win:UInt64 |
配置大小,以位元組為單位。 這個值對於非常大的配置而言是準確的。 |
TypeId |
win:Pointer |
MethodTable 的位址。 當在這個事件期間配置了數種類型的物件時,這是對應到最後一個配置物件的 MethodTable 位址(導致超過 100 KB 閾值的物件)。 |
TypeName |
win:UnicodeString |
已配置的型別名稱。 當在這個事件期間配置了數種類型的物件時,這是最後一個配置物件的類型(導致超過100 KB閾值的物件)。 |
HeapIndex |
win:UInt32 |
配置物件的堆積。 使用工作站垃圾收集執行時,此值為0(零)。 |
Address |
win:Pointer |
最後一個配置對象的位址。 |
ClrInstanceID |
win:UInt16 |
CoreCLR 實例的唯一標識符。 |
GCCreateConcurrentThread_V1 事件
下表顯示 關鍵字和層級:
引發事件的關鍵詞 | 水準 |
---|---|
GCKeyword (0x1) |
資訊 (4) |
ThreadingKeyword (0x10000) |
資訊 (4) |
下表顯示事件資訊:
事件 | 事件標識碼 | 引發時機 |
---|---|---|
GCCreateConcurrentThread_V1 |
11 | 已建立並行垃圾收集線程。 |
此事件沒有任何事件數據。
GCTerminateConcurrentThread_V1 事件
下表顯示 關鍵字和層級:
引發事件的關鍵詞 | 水準 |
---|---|
GCKeyword (0x1) |
資訊 (4) |
ThreadingKeyword (0x10000) |
資訊 (4) |
下表顯示事件資訊:
事件 | 事件標識碼 | 引發時機 |
---|---|---|
GCTerminateConcurrentThread_V1 |
12 | 並行垃圾收集線程已終止。 |
此事件沒有任何事件數據。
GCFinalizersBegin_V1 事件
下表顯示 關鍵字和層級:
引發事件的關鍵詞 | 水準 |
---|---|
GCKeyword (0x1) |
資訊 (4) |
下表顯示事件資訊:
事件 | 事件標識碼 | 引發時機 |
---|---|---|
GCFinalizersBegin_V1 |
14 | 執行完成項的開始。 |
此事件沒有任何事件數據。
GCFinalizersEnd_V1 事件
下表顯示 關鍵字和層級:
引發事件的關鍵詞 | 水準 |
---|---|
GCKeyword (0x1) |
資訊 (4) |
下表顯示事件資訊:
事件 | 事件標識碼 | 引發時機 |
---|---|---|
GCFinalizersEnd_V1 |
13 | 執行完成項的結尾。 |
下表顯示事件資料:
功能變數名稱 | 數據類型 | 描述 |
---|---|---|
Count |
win:UInt32 |
已執行的完成項數目。 |
ClrInstanceID |
win:UInt16 | CLR 或 CoreCLR 實例的唯一標識碼。 |
SetGCHandle 事件
下表顯示 關鍵字和層級:
引發事件的關鍵詞 | 水準 |
---|---|
GCHandleKeyword (0x2) |
資訊 (4) |
下表顯示事件資訊:
事件 | 事件標識碼 | 引發時機 |
---|---|---|
SetGCHandle |
30 | 已設定 GC 句柄。 |
下表顯示事件資料:
功能變數名稱 | 數據類型 | 描述 |
---|---|---|
HandleID |
win:Pointer |
已配置句柄的位址。 |
ObjectID |
win:Pointer |
建立句柄的物件位址。 |
Kind |
win:UInt32 |
已設定的 GC 句柄類型。 0x0 :WeakShort0x1 : WeakLong0x2 :強式0x3 :已釘選0x4 :變數0x5 : RefCounted0x6 :相依0x7 :AsyncPinned0x8 :SizedRef |
Generation |
win:UInt32 |
建立句柄的對象產生。 |
AppDomainID |
win:UInt64 |
AppDomain識別碼。 |
ClrInstanceID |
win:UInt16 |
CoreCLR 實例的唯一標識符。 |
DestroyGCHandle 事件
下表顯示 關鍵字和層級:
引發事件的關鍵詞 | 水準 |
---|---|
GCHandleKeyword (0x2) |
資訊 (4) |
下表顯示事件資訊:
事件 | 事件標識碼 | 引發時機 |
---|---|---|
DestroyGCHandle |
31 | GC 句柄已終結。 |
下表顯示事件資料:
功能變數名稱 | 數據類型 | 描述 |
---|---|---|
HandleID |
win:Pointer |
終結句柄的位址。 |
ClrInstanceID |
win:UInt16 | CoreCLR 實例的唯一標識符。 |
PinObjectAtGCTime 事件
下表顯示 關鍵字和層級:
引發事件的關鍵詞 | 水準 |
---|---|
GCKeyword (0x1) |
詳細資訊 (5) |
下表顯示事件資訊:
事件 | 事件標識碼 | 引發時機 |
---|---|---|
PinObjectAtGCTime |
33 | 在 GC 期間釘選物件。 |
下表顯示事件資料:
功能變數名稱 | 數據類型 | 描述 |
---|---|---|
HandleID |
win:Pointer |
句柄的位址。 |
ObjectID |
win:Pointer |
釘選物件的位址。 |
ObjectSize |
win:UInt64 |
固定物件的大小。 |
TypeName |
win:UnicodeString |
釘選物件的型別名稱。 |
ClrInstanceID |
win:UInt16 |
CoreCLR 實例的唯一標識符。 |
GCTriggered 事件
下表顯示 關鍵字和層級:
引發事件的關鍵詞 | 水準 |
---|---|
GCKeyword (0x1) |
詳細資訊 (5) |
下表顯示事件資訊:
事件 | 事件標識碼 | 引發時機 |
---|---|---|
GCTriggered |
35 | 已觸發 GC。 |
下表顯示事件資料:
功能變數名稱 | 數據類型 | 描述 |
---|---|---|
Reason |
win:UInt32 |
觸發 GC 的原因。0x0 :AllocSmall0x1 : 引發0x2 : LowMemory0x3 :空白0x4 : AllocLarge0x5 :OutOfSpaceSmallObjectHeap0x6 :OutOfSpaceLargeObjectHeap0x7 :InducedNoForce0x8 : 壓力0x9 : InducedLowMemory |
ClrInstanceID |
win:UInt16 |
CoreCLR 實例的唯一標識符。 |
IncreaseMemoryPressure 事件
下表顯示 關鍵字和層級:
引發事件的關鍵詞 | 水準 |
---|---|
GCKeyword (0x1) |
資訊 (4) |
下表顯示事件資訊:
事件 | 事件標識碼 | 引發時機 |
---|---|---|
IncreaseMemoryPressure |
200 | 記憶體壓力增加。 |
下表顯示事件資料:
功能變數名稱 | 數據類型 | 描述 |
---|---|---|
ClrInstanceID |
win:UInt16 | CoreCLR 實例的唯一標識符。 |
DecreaseMemoryPressure 事件
下表顯示 關鍵字和層級:
引發事件的關鍵詞 | 水準 |
---|---|
GCKeyword (0x1) |
資訊 (4) |
下表顯示事件資訊:
事件 | 事件標識碼 | 引發時機 |
---|---|---|
DecreaseMemoryPressure |
201 | 記憶體壓力已降低。 |
下表顯示事件資料:
功能變數名稱 | 數據類型 | 描述 |
---|---|---|
BytesFreed |
win:UInt32 |
釋放的位元組。 |
ClrInstanceID |
win:UInt16 |
CoreCLR 實例的唯一標識符。 |
GCMarkWithType 事件
下表顯示 關鍵字和層級:
引發事件的關鍵詞 | 水準 |
---|---|
GCKeyword (0x1) |
資訊 (4) |
下表顯示事件資訊:
事件 | 事件標識碼 | 引發時機 |
---|---|---|
GCMarkWithType |
202 | GC 根目錄已在 GC 標記階段期間標示。 |
下表顯示事件資料:
功能變數名稱 | 數據類型 | 描述 |
---|---|---|
HeapNum |
win:UInt32 |
堆積編號。 |
ClrInstanceID |
win:UInt16 | CoreCLR 實例的唯一標識符。 |
Type |
win:UInt32 |
GC 根類型。0x0 : Stack0x1 :完成項0x2 : 句柄0x3 :舊版0x4 :SizedRef0x5 : Overflow |
Bytes |
win:UInt64 |
標示的位元組數目。 |
GCJoin_V2 事件
下表顯示 關鍵字和層級:
引發事件的關鍵詞 | 水準 |
---|---|
GCKeyword (0x1) |
詳細資訊 (5) |
下表顯示事件資訊:
事件 | 事件標識碼 | 引發時機 |
---|---|---|
GCJoin_V2 |
203 | 已聯結 GC 線程。 |
下表顯示事件資料:
功能變數名稱 | 數據類型 | 描述 |
---|---|---|
Heap |
win:UInt32 |
堆積編號 |
JoinTime |
win:UInt32 |
指出此事件是在聯結的開頭或聯結的結尾引發(0x0 聯結開始,0x1 聯結結束) |
JoinType |
win:UInt32 |
聯結類型。 0x0 :上次聯結0x1 :聯結0x2 :重新啟動0x3 :第一個反向聯結0x4 :反向聯結 |
ClrInstanceID |
win:UInt16 |
CoreCLR 實例的唯一標識符。 |