記憶體回收 ETW 事件
更新:2010 年 8 月
這些事件會收集與記憶體回收有關的資訊。 它們有助於診斷和偵錯,包括判斷執行記憶體回收的次數、記憶體回收期間釋放多少記憶體等等。
這個分類包含下列事件:
GCStart_V1 事件
GCEnd_V1 事件
GCHeapStats_V1 事件
GCCreateSegment_V1 事件
GCFreeSegment_V1 事件
GCRestartEEBegin_V1 事件
GCRestartEEEnd_V1 事件
GCSuspendEE_V1 事件
GCSuspendEEEnd_V1 事件
GCAllocationTick_V1 事件
GCFinalizersBegin_V1 事件
GCFinalizersEnd_V1 事件
GCCreateConcurrentThread_V1 事件
GCTerminateConcurrentThread_V1 事件
GCStart_V1 事件
下表顯示關鍵字和層級。 如需詳細資訊,請參閱 CLR ETW 關鍵字和層級。
引發事件的關鍵字 |
層級 |
---|---|
GCKeyword (0x1) |
告知性 (4) |
下表顯示事件資訊。
事件 |
事件識別碼 |
引發時機 |
---|---|---|
GCStart_V1 |
1 |
記憶體回收已啟動。 |
下表顯示事件資料。
欄位名稱 |
資料型別 |
描述 |
---|---|---|
Count |
win:UInt32 |
第 n 次記憶體回收。 |
Depth |
win:UInt32 |
正在回收的層代。 |
Reason |
win:UInt32 |
觸發記憶體回收的原因: 0x0 - 小型物件堆積配置。 0x1 - 引發。 0x2 - 記憶體不足。 0x3 - 空白。 0x4 - 大型物件堆積配置。 0x5 - 空間不足 (適用於小型物件堆積)。 0x6 - 空間不足 (適用於大型物件堆積)。 |
Type |
win:UInt32 |
0x0 - 背景記憶體回收外部發生封鎖記憶體回收。 0x1 - 背景記憶體回收。 0x2 - 背景記憶體回收期間發生封鎖記憶體回收。 |
ClrInstanceID |
win:UInt16 |
CLR 或 CoreCLR 執行個體的唯一 ID。 |
回到頁首
GCEnd_V1 事件
下表顯示關鍵字和層級。
引發事件的關鍵字 |
層級 |
---|---|
GCKeyword (0x1) |
告知性 (4) |
下表顯示事件資訊。
事件 |
事件識別碼 |
引發時機 |
---|---|---|
GCEnd_V1 |
2 |
記憶體回收已結束。 |
下表顯示事件資料。
欄位名稱 |
資料型別 |
描述 |
---|---|---|
Count |
win:UInt32 |
第 n 次記憶體回收。 |
Depth |
win:UInt32 |
已回收的層代。 |
ClrInstanceID |
win:UInt16 |
CLR 或 CoreCLR 執行個體的唯一 ID。 |
回到頁首
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 執行個體的唯一 ID。 |
回到頁首
GCCreateSegment_V1 事件
下表顯示關鍵字和層級。
引發事件的關鍵字 |
層級 |
---|---|
GCKeyword (0x1) |
告知性 (4) |
下表顯示事件資訊。
事件 |
事件識別碼 |
引發時機 |
---|---|---|
GCCreateSegment_V1 |
5 |
已經建立新的記憶體回收區段。 此外,在已經執行中的處理序上啟用追蹤時,就會針對每個現有的區段引發這個事件。 |
下表顯示事件資料。
欄位名稱 |
資料型別 |
描述 |
---|---|---|
Address |
win:UInt64 |
區段的位址。 |
Size |
win:UInt64 |
區段的大小。 |
Type |
win:UInt32 |
0x0 - 小型物件堆積。 0x1 - 大型物件堆積。 0x2 - 唯讀堆積。 |
ClrInstanceID |
win:UInt16 |
CLR 或 CoreCLR 執行個體的唯一 ID。 |
回到頁首
GCFreeSegment_V1 事件
下表顯示關鍵字和層級。
引發事件的關鍵字 |
層級 |
---|---|
GCKeyword (0x1) |
告知性 (4) |
下表顯示事件資訊。
事件 |
事件識別碼 |
引發時機 |
---|---|---|
GCFreeSegment_V1 |
6 |
已經釋放記憶體回收區段。 |
下表顯示事件資料。
欄位名稱 |
資料型別 |
描述 |
---|---|---|
Address |
win:UInt64 |
區段的位址。 |
ClrInstanceID |
win:UInt16 |
CLR 或 CoreCLR 執行個體的唯一 ID。 |
回到頁首
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 |
記憶體回收執行引擎暫止的開始。 |
下表顯示事件資料。
欄位名稱 |
資料型別 |
描述 |
---|---|---|
Reason |
win:UInt16 |
0x0 - 其他。 0x1 - 記憶體回收。 0x2 - 應用程式定義域關閉。 0x3 - 程式碼定位。 0x4 - 關機。 0x5 - 偵錯工具。 0x6 - 準備進行記憶體回收。 |
Count |
win:UInt32 |
暫止的執行緒數目。 |
ClrInstanceID |
win:UInt16 |
CLR 或 CoreCLR 執行個體的唯一 ID。 |
回到頁首
GCSuspendEEEnd_V1 事件
下表顯示關鍵字和層級:
引發事件的關鍵字 |
層級 |
---|---|
GCKeyword (0x1) |
告知性 (4) |
下表顯示事件資訊:
事件 |
事件識別碼 |
引發時機 |
---|---|---|
GCSuspendEEEnd_V1 |
8 |
記憶體回收執行引擎暫止的結束。 |
無事件資料。
回到頁首
GCAllocationTick_V1 事件
下表顯示關鍵字和層級。
引發事件的關鍵字 |
層級 |
---|---|
GCKeyword (0x1) |
告知性 (4) |
下表顯示事件資訊。
事件 |
事件識別碼 |
引發時機 |
---|---|---|
GCAllocationTick_V1 |
10 |
每次大約配置 100 KB 時。 |
下表顯示事件資料。
欄位名稱 |
資料型別 |
描述 |
---|---|---|
AllocationSize |
win:UInt32 |
配置大小。 |
Kind |
win:UInt32 |
0x0 - 小型物件配置 (配置位於小型物件堆積中)。 0x1 - 大型物件配置 (配置位於大型物件堆積中)。 |
ClrInstanceID |
win:UInt16 |
CLR 或 CoreCLR 執行個體的唯一 ID。 |
回到頁首
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。 |
回到頁首
GCCreateConcurrentThread_V1 事件
下表顯示關鍵字和層級。
引發事件的關鍵字 |
層級 |
---|---|
GCKeyword (0x1) |
告知性 (4) |
ThreadingKeyword (0x10000) |
告知性 (4) |
下表顯示事件資訊。
事件 |
事件識別碼 |
引發時機 |
---|---|---|
GCCreateConcurrentThread_V1 |
11 |
已建立並行記憶體回收執行緒。 |
無事件資料。
回到頁首
GCTerminateConcurrentThread_V1 事件
下表顯示關鍵字和層級。
引發事件的關鍵字 |
層級 |
---|---|
GCKeyword (0x1) |
告知性 (4) |
ThreadingKeyword (0x10000) |
告知性 (4) |
下表顯示事件資訊。
事件 |
事件識別碼 |
引發時機 |
---|---|---|
GCTerminateConcurrentThread_V1 |
12 |
已終止並行記憶體回收執行緒。 |
無事件資料。
回到頁首
請參閱
概念
變更記錄
日期 |
記錄 |
原因 |
---|---|---|
2010 年 8 月 |
已更正 GCStart_V1 事件的類型資訊。 |
內容 Bug 修正。 |