共用方式為


.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:WeakShort

0x1: WeakLong

0x2:強式

0x3:已釘選

0x4:變數

0x5: RefCounted

0x6:相依

0x7:AsyncPinned

0x8: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:AllocSmall

0x1: 引發

0x2: LowMemory

0x3:空白

0x4: AllocLarge

0x5:OutOfSpaceSmallObjectHeap

0x6:OutOfSpaceLargeObjectHeap

0x7:InducedNoForce

0x8: 壓力

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

0x1:完成項

0x2: 句柄

0x3:舊版

0x4:SizedRef

0x5: 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 實例的唯一標識符。