共用方式為


記憶體回收 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

已終止並行記憶體回收執行緒。

無事件資料。

回到頁首

請參閱

概念

CLR ETW 事件

變更記錄

日期

記錄

原因

2010 年 8 月

已更正 GCStart_V1 事件的類型資訊。

內容 Bug 修正。