垃圾回收 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 |
已终止并发垃圾回收线程。 |
无事件数据。
返回页首
请参见
概念
修订记录
日期 |
修订记录 |
原因 |
---|---|---|
2010 年 8 月 |
更正了 GCStart_V1 事件的类型信息。 |
内容 Bug 修复 |