垃圾回收 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)

下表显示事件信息。

Event

事件 ID

在以下情况下引发

GCStart_V1

1

已开始垃圾回收。

下表显示事件数据。

字段名

数据类型

说明

计数

win:UInt32

第 n 次垃圾回收。

Depth

win:UInt32

正在回收的代。

原因

win:UInt32

触发垃圾回收的原因:

0x0 - 小对象堆分配。

0x1 - 已引发。

0x2 - 内存不足。

0x3 - 空。

0x4 - 大对象堆分配。

0x5 - 空间不足(针对小对象堆)。

0x6 - 空间不足(针对大对象堆)。

类型

win:UInt32

0x0 - 阻止在后台垃圾回收外发生垃圾回收。

0x1 - 后台垃圾回收。

0x2 - 阻止在后台垃圾回收期间发生垃圾回收。

ClrInstanceID

win:UInt16

CLR 或 CoreCLR 的实例的唯一 ID。

返回页首

GCEnd_V1 事件

下表显示关键字和级别。

用于引发事件的关键字

级别

GCKeyword (0x1)

信息性 (4)

下表显示事件信息。

Event

事件 ID

在以下情况下引发

GCEnd_V1

2

已结束垃圾回收。

下表显示事件数据。

字段名

数据类型

说明

计数

win:UInt32

第 n 次垃圾回收。

Depth

win:UInt32

已回收的代。

ClrInstanceID

win:UInt16

CLR 或 CoreCLR 的实例的唯一 ID。

返回页首

GCHeapStats_V1 事件

下表显示关键字和级别。

用于引发事件的关键字

级别

GCKeyword (0x1)

信息性 (4)

下表显示事件信息。

Event

事件 ID

说明

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)

下表显示事件信息。

Event

事件 ID

在以下情况下引发

GCCreateSegment_V1

5

已创建一个新的垃圾回收段。 此外,如果为已在运行的进程启用跟踪功能,则将为每个现有段引发此事件。

下表显示事件数据。

字段名

数据类型

说明

地址

win:UInt64

段的地址。

大小

win:UInt64

段的大小。

Type

win:UInt32

0x0 - 小对象堆。

0x1 - 大对象堆。

0x2 - 只读堆。

ClrInstanceID

win:UInt16

CLR 或 CoreCLR 的实例的唯一 ID。

返回页首

GCFreeSegment_V1 事件

下表显示关键字和级别。

用于引发事件的关键字

级别

GCKeyword (0x1)

信息性 (4)

下表显示事件信息。

Event

事件 ID

在以下情况下引发

GCFreeSegment_V1

6

已释放一个垃圾回收段。

下表显示事件数据。

字段名

数据类型

说明

地址

win:UInt64

段的地址。

ClrInstanceID

win:UInt16

CLR 或 CoreCLR 的实例的唯一 ID。

返回页首

GCRestartEEBegin_V1 事件

下表显示关键字和级别。

用于引发事件的关键字

级别

GCKeyword (0x1)

信息性 (4)

下表显示事件信息。

Event

事件 ID

在以下情况下引发

GCRestartEEBegin_V1

7

已开始从公共语言运行时挂起中恢复。

无事件数据。

返回页首

GCRestartEEEnd_V1 事件

下表显示关键字和级别。

用于引发事件的关键字

级别

GCKeyword (0x1)

信息性 (4)

下表显示事件信息。

Event

事件 ID

在以下情况下引发

GCRestartEEEnd_V1

3

已结束从公共语言运行时挂起中恢复。

无事件数据。

返回页首

GCSuspendEE_V1 事件

下表显示关键字和级别。

用于引发事件的关键字

级别

GCKeyword (0x1)

信息性 (4)

下表显示事件信息。

Event

事件 ID

在以下情况下引发

GCSuspendEE_V1

9

开始挂起垃圾回收的执行引擎。

下表显示事件数据。

字段名

数据类型

说明

原因

win:UInt16

0x0 - 其他。

0x1 - 垃圾回收。

0x2 - 应用程序域关闭。

0x3 - 代码丢弃。

0x4 - 关闭。

0x5 - 调试器。

0x6 - 准备垃圾回收。

计数

win:UInt32

挂起的线程数。

ClrInstanceID

win:UInt16

CLR 或 CoreCLR 的实例的唯一 ID。

返回页首

GCSuspendEEEnd_V1 事件

下表显示关键字和级别:

用于引发事件的关键字

级别

GCKeyword (0x1)

信息性 (4)

下表显示事件信息:

Event

事件 ID

在以下情况下引发

GCSuspendEEEnd_V1

8

结束挂起垃圾回收的执行引擎。

无事件数据。

返回页首

GCAllocationTick_V1 事件

下表显示关键字和级别。

用于引发事件的关键字

级别

GCKeyword (0x1)

信息性 (4)

下表显示事件信息。

Event

事件 ID

在以下情况下引发

GCAllocationTick_V1

10

每次分配大约 100 KB 时。

下表显示事件数据。

字段名

数据类型

说明

AllocationSize

win:UInt32

分配大小。

Kind

win:UInt32

0x0 - 小型对象分配(在小对象堆中分配)。

0x1 - 大型对象分配(在大对象堆中分配)。

ClrInstanceID

win:UInt16

CLR 或 CoreCLR 的实例的唯一 ID。

返回页首

GCFinalizersBegin_V1 事件

下表显示关键字和级别。

用于引发事件的关键字

级别

GCKeyword (0x1)

信息性 (4)

下表显示事件信息。

Event

事件 ID

在以下情况下引发

GCFinalizersBegin_V1

14

开始运行终结器。

无事件数据。

返回页首

GCFinalizersEnd_V1 事件

下表显示关键字和级别。

用于引发事件的关键字

级别

GCKeyword (0x1)

信息性 (4)

下表显示事件信息。

Event

事件 ID

在以下情况下引发

GCFinalizersEnd_V1

13

结束运行终结器。

下表显示事件数据。

字段名

数据类型

说明

计数

win:UInt32

已运行的终结器的数量。

ClrInstanceID

win:UInt16

CLR 或 CoreCLR 的实例的唯一 ID。

返回页首

GCCreateConcurrentThread_V1 事件

下表显示关键字和级别。

用于引发事件的关键字

级别

GCKeyword (0x1)

信息性 (4)

ThreadingKeyword (0x10000)

信息性 (4)

下表显示事件信息。

Event

事件 ID

在以下情况下引发

GCCreateConcurrentThread_V1

11

已创建并发垃圾回收线程。

无事件数据。

返回页首

GCTerminateConcurrentThread_V1 事件

下表显示关键字和级别。

用于引发事件的关键字

级别

GCKeyword (0x1)

信息性 (4)

ThreadingKeyword (0x10000)

信息性 (4)

下表显示事件信息。

Event

事件 ID

在以下情况下引发

GCTerminateConcurrentThread_V1

12

已终止并发垃圾回收线程。

无事件数据。

返回页首

请参见

概念

CLR ETW 事件

修订记录

日期

修订记录

原因

2010 年 8 月

更正了 GCStart_V1 事件的类型信息。

内容 Bug 修复