.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 已開始從通用語言執行階段的擱置中恢復。

此事件沒有任何事件數據。

GCRestartEEEnd_V1 事件

下表說明關鍵字和層級:

引發事件的關鍵字 層級
GCKeyword (0x1) 告知性 (4)

下表說明事件資訊:

活動 事件識別碼 引發的時機
GCRestartEEEnd_V1 3 從通用語言執行階段擱置恢復已結束。

此事件沒有任何事件數據。

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 的位址。 當有多個在此事件期間所配置的物件類型時,這是對應至上次的物件配置 (該物件造成超過 100 KB 的臨界值) 的 MethodTable 位址。
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 執行個體的唯一 ID。

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:堆疊

0x1:完成項

0x2:處理

0x3:老

0x4:SizedRef

0x5:溢出

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