共用方式為


垃圾收集 ETW 事件

這些事件會收集與垃圾收集相關的資訊。 它們有助於診斷和偵錯,包括判斷執行垃圾收集的次數、垃圾收集期間釋放多少記憶體等等。

此類別包含下列事件:

GCStart_V1事件

下表顯示 關鍵詞和層級。 如需詳細資訊,請參閱 CLR ETW 關鍵詞和層級

引發事件的關鍵詞 水準
GCKeyword (0x1) 資訊 (4)

下表顯示事件資訊:

事件 事件標識碼 引發時機
GCStart_V1 1 已啟動垃圾收集。

下表顯示事件資料:

功能變數名稱 數據類型 描述
計數 win:UInt32 n 個垃圾收集
深度 win:UInt32 正在收集的世代。
原因 win:UInt32 為何觸發垃圾收集:

0x0 - 小型物件堆積配置。

0x1 - 誘發。

0x2 - 記憶體不足。

0x3 - 空白。

0x4 - 大型物件堆積配置。

0x5 - 空間不足(適用於小型物件堆積)。

0x6 - 空間不足(適用於大型物件堆積)。

0x7 - 誘發但未強制為封鎖。

0x8 - 壓力測試。

0x9 - 觀察到進程的完成項線程記憶體不足,並引發 GC。

0x10 - 使用者程式代碼引發 GC,並要求它是壓縮的 GC。
類型 win:UInt32 0x0 - 封鎖垃圾收集發生在背景垃圾收集之外。

0x1 - 背景垃圾收集。

0x2 - 在背景垃圾收集期間發生封鎖垃圾收集。
ClrInstanceID win:UInt16 CLR 或 CoreCLR 實例的唯一標識碼。

GCEnd_V1事件

下表顯示 關鍵字和層級:

引發事件的關鍵詞 水準
GCKeyword (0x1) 資訊 (4)

下表顯示事件資訊:

事件 事件標識碼 引發時機
GCEnd_V1 2 垃圾收集已結束。

下表顯示事件資料:

功能變數名稱 數據類型 描述
計數 win:UInt32 n 個垃圾收集
深度 win:UInt32 收集的世代。
ClrInstanceID win:UInt16 CLR 或 CoreCLR 實例的唯一標識碼。

GCHeapStats_V1事件

下表顯示 關鍵字和層級:

引發事件的關鍵詞 水準
GCKeyword (0x1) 資訊 (4)

下表顯示事件資訊:

事件 事件標識碼 描述
GCHeapStats_V1 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 CLR 或 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 CLR 或 CoreCLR 實例的唯一標識碼。
GenerationSize4 win:UInt64 固定物件堆積的大小,以位元組為單位。
TotalPromotedSize4 win:UInt64 在最後一個集合之後釘選的物件堆積中倖存下來的位元組數目。

GCCreateSegment_V1事件

下表顯示 關鍵字和層級:

引發事件的關鍵詞 水準
GCKeyword (0x1) 資訊 (4)

下表顯示事件資訊:

事件 事件標識碼 引發時機
GCCreateSegment_V1 5 已建立新的垃圾收集區段。 此外,在已經執行的進程上啟用追蹤時,會針對每個現有的區段引發此事件。

下表顯示事件資料:

功能變數名稱 數據類型 描述
位址 win:UInt64 區段的位址。
大小 win:UInt64 區段的大小。
類型 win:UInt32 0x0 - 小型物件堆積。

0x1 - 大型物件堆積。

0x2 - 只讀堆積。
ClrInstanceID win:UInt16 CLR 或 CoreCLR 實例的唯一標識碼。

請注意,垃圾收集行程所配置的區段大小是實作特定的,而且隨時可能會變更,包括定期更新。 您的應用程式絕對不應該假設或相依於特定區段大小,也不應該嘗試設定區段配置可用的記憶體數量。

GCFreeSegment_V1事件

下表顯示 關鍵字和層級:

引發事件的關鍵詞 水準
GCKeyword (0x1) 資訊 (4)

下表顯示事件資訊:

事件 事件標識碼 引發時機
GCFreeSegment_V1 6 已釋放垃圾收集區段。

下表顯示事件資料:

功能變數名稱 數據類型 描述
位址 win:UInt64 區段的位址。
ClrInstanceID win:UInt16 CLR 或 CoreCLR 實例的唯一標識碼。

GCRestartEEBegin_V1事件

下表顯示 關鍵字和層級:

引發事件的關鍵詞 水準
GCKeyword (0x1) 資訊 (4)

下表顯示事件資訊:

事件 事件標識碼 引發時機
GCRestartEEBegin_V1 7 從 Common Language Runtime 暫停恢復已開始。

沒有事件數據。

GCRestartEEEnd_V1 事件

下表顯示 關鍵字和層級:

引發事件的關鍵詞 水準
GCKeyword (0x1) 資訊 (4)

下表顯示事件資訊:

事件 事件標識碼 引發時機
GCRestartEEEnd_V1 3 從 Common Language Runtime 暫停恢復已結束。

沒有事件數據。

GCSuspendEE_V1 事件

下表顯示 關鍵字和層級:

引發事件的關鍵詞 水準
GCKeyword (0x1) 資訊 (4)

下表顯示事件資訊:

事件 事件標識碼 引發時機
GCSuspendEE_V1 9 開始暫停執行引擎以進行垃圾收集。

下表顯示事件資料:

功能變數名稱 數據類型 描述
原因 win:UInt16 0x0 - 其他。

0x1 - 垃圾收集。

0x2 - 應用程式域關機。

0x3 - 程式代碼投向。

0x4 - 關機。

0x5 - 調試程式。

0x6 - 準備垃圾收集。
計數 win:UInt32 當時的 GC 計數。 通常,您會在此之後看到後續的 GC Start 事件,其 Count 會是這個 Count + 1,因為我們在垃圾收集期間增加 GC 索引。
ClrInstanceID win:UInt16 CLR 或 CoreCLR 實例的唯一標識碼。

GCSuspendEEEnd_V1事件

下表顯示 關鍵字和層級:

引發事件的關鍵詞 水準
GCKeyword (0x1) 資訊 (4)

下表顯示事件資訊:

事件 事件標識碼 引發時機
GCSuspendEEEnd_V1 8 垃圾收集的執行引擎暫停結束。

沒有事件數據。

GCAllocationTick_V2事件

下表顯示 關鍵字和層級:

引發事件的關鍵詞 水準
GCKeyword (0x1) 詳細資訊 (5)

下表顯示事件資訊:

事件 事件標識碼 引發時機
GCAllocationTick_V2 10 每個物件堆積配置大約 100 KB 時。 也就是說,SOH、LOH 和 POH 會個別累積其配置的位元組。 在 [伺服器 GC] 中,這會依堆積完成。

下表顯示事件資料:

功能變數名稱 數據類型 描述
AllocationAmount win:UInt32 配置大小,以位元組為單位。 此值適用於小於ULONG長度的配置(4,294,967,295個字節)。 如果配置更大,此欄位會包含截斷的值。 針對非常大的配置使用 AllocationAmount64
AllocationKind win:UInt32 0x0 - 小型物件配置(配置位於小型物件堆積中)。
0x1 - 大型物件配置(配置位於大型物件堆積中)。
0x2 - 釘選的物件配置(配置位於釘選的物件堆積中)。
ClrInstanceID win:UInt16 CLR 或 CoreCLR 實例的唯一標識碼。
AllocationAmount64 win:UInt64 配置大小,以位元組為單位。 這個值對於非常大的配置而言是準確的。
TypeId win:Pointer MethodTable 的位址。 當在這個事件期間配置了數種類型的物件時,這是對應到最後一個配置物件的 MethodTable 位址(導致超過 100 KB 閾值的物件)。
TypeName win:UnicodeString 已配置的型別名稱。 當在這個事件期間配置了數種類型的物件時,這是最後一個配置物件的類型(導致超過100 KB閾值的物件)。
HeapIndex win:UInt32 配置物件的堆積。 使用工作站垃圾收集執行時,此值為0(零)。

GCAllocationTick_V3 事件

下表顯示 關鍵字和層級:

引發事件的關鍵詞 水準
GCKeyword (0x1) 詳細資訊 (5)

下表顯示事件資訊:

事件 事件標識碼 引發時機
GCAllocationTick_V2 10 每個物件堆積配置大約 100 KB 時。 也就是說,SOH、LOH 和 POH 會個別累積其配置的位元組。 在 [伺服器 GC] 中,這會依堆積完成。

下表顯示事件資料:

功能變數名稱 數據類型 描述
AllocationAmount win:UInt32 配置大小,以位元組為單位。 此值適用於小於ULONG長度的配置(4,294,967,295個字節)。 如果配置更大,此欄位會包含截斷的值。 針對非常大的配置使用 AllocationAmount64
AllocationKind win:UInt32 0x0 - 小型物件配置(配置位於小型物件堆積中)。
0x1 - 大型物件配置(配置位於大型物件堆積中)。
0x2 - 釘選的物件配置(配置位於釘選的物件堆積中)。
ClrInstanceID win:UInt16 CLR 或 CoreCLR 實例的唯一標識碼。
AllocationAmount64 win:UInt64 配置大小,以位元組為單位。 這個值對於非常大的配置而言是準確的。
TypeId win:Pointer MethodTable 的位址。 當在這個事件期間配置了數種類型的物件時,這是對應到最後一個配置物件的 MethodTable 位址(導致超過 100 KB 閾值的物件)。
TypeName win:UnicodeString 已配置的型別名稱。 當在這個事件期間配置了數種類型的物件時,這是最後一個配置物件的類型(導致超過100 KB閾值的物件)。
HeapIndex win:UInt32 配置物件的堆積。 使用工作站垃圾收集執行時,此值為0(零)。
位址 win:Pointer 最後一個配置對象的位址。

GCFinalizersBegin_V1事件

下表顯示 關鍵字和層級:

引發事件的關鍵詞 水準
GCKeyword (0x1) 資訊 (4)

下表顯示事件資訊:

事件 事件標識碼 引發時機
GCFinalizersBegin_V1 14 執行完成項的開始。

沒有事件數據。

GCFinalizersEnd_V1事件

下表顯示 關鍵字和層級:

引發事件的關鍵詞 水準
GCKeyword (0x1) 資訊 (4)

下表顯示事件資訊:

事件 事件標識碼 引發時機
GCFinalizersEnd_V1 13 執行完成項的結尾。

下表顯示事件資料:

功能變數名稱 數據類型 描述
計數 win:UInt32 已執行的完成項數目。
ClrInstanceID win:UInt16 CLR 或 CoreCLR 實例的唯一標識碼。

GCCreateConcurrentThread_V1 事件

下表顯示 關鍵字和層級:

引發事件的關鍵詞 水準
GCKeyword (0x1) 資訊 (4)
ThreadingKeyword (0x10000) 資訊 (4)

下表顯示事件資訊:

事件 事件標識碼 引發時機
GCCreateConcurrentThread_V1 11 已建立並行垃圾收集線程。

沒有事件數據。

GCTerminateConcurrentThread_V1 事件

下表顯示 關鍵字和層級:

引發事件的關鍵詞 水準
GCKeyword (0x1) 資訊 (4)
ThreadingKeyword (0x10000) 資訊 (4)

下表顯示事件資訊:

事件 事件標識碼 引發時機
GCTerminateConcurrentThread_V1 12 並行垃圾收集線程已終止。

沒有事件數據。

另請參閱