События сборки мусора (трассировка событий Windows)
Эти события собирают сведения, относящиеся к сборке мусора. Они помогают при диагностике и отладке, в том числе позволяют определить, сколько раз осуществлялась сборка мусора, какой объем памяти был освобожден в ходе сборки мусора и т. д.
Эта категория состоит из следующих событий:
- Событие GCStart_V1
- Событие GCEnd_V1
- Событие GCHeapStats_V1
- Событие GCHeapStats_V2
- Событие GCCreateSegment_V1
- Событие GCFreeSegment_V1
- Событие GCRestartEEBegin_V1
- Событие GCRestartEEEnd_V1
- Событие GCSuspendEE_V1
- Событие GCSuspendEEEnd_V1
- Событие GCAllocationTick_V2
- Событие GCAllocationTick_V3
- Событие GCFinalizersBegin_V1
- Событие GCFinalizersEnd_V1
- Событие GCCreateConcurrentThread_V1
- Событие GCTerminateConcurrentThread_V1
Событие GCStart_V1
В таблице ниже показаны ключевое слово и уровень. Дополнительные сведения см. в разделе ключевых слов и уровней среды CLR.
Ключевое слово для вызова события | Уровень |
---|---|
GCKeyword (0x1) |
Информационный (4) |
В таблице ниже представлены сведения о событии.
Мероприятие | ИД события | Условие вызова |
---|---|---|
GCStart_V1 |
1 | Сборка мусора начата. |
В таблице ниже представлены данные события.
Имя поля | Тип данных | Description |
---|---|---|
Count | win:UInt32 | Сборка мусора, n-я по счету. |
Глубина | win:UInt32 | Поколение, для которого выполняется сборка. |
Причина | win:UInt32 | Причина запуска сборки мусора: 0x0 — выделение кучи маленьких объектов. 0x1 — принудительная. 0x2 — недостаточно памяти. 0x3 — пусто. 0x4 — выделение кучи больших объектов. 0x5 — недостаточно места (для кучи маленьких объектов). 0x6 — недостаточно места (для кучи больших объектов). 0x7 — принудительная, но не блокирующий. 0x8 - Стресс-тестирование. 0x9 — поток завершения, наблюдаемый процесс, находится в низкой памяти и вызывает сборку сборок. 0x10 — код пользователя, индуцированный GC, и запросил его на сжатие GC. |
Тип | win:UInt32 | 0x0 — блокировка сборки мусора вне фоновой сборки мусора. 0x1 — фоновая сборка мусора. 0x2 — блокировка сборки мусора в ходе фоновой сборки мусора. |
ClrInstanceID | win:UInt16 | Уникальный идентификатор экземпляра CLR или CoreCLR. |
Событие GCEnd_V1
В таблице ниже показаны ключевое слово и уровень.
Ключевое слово для вызова события | Уровень |
---|---|
GCKeyword (0x1) |
Информационный (4) |
В таблице ниже представлены сведения о событии.
Мероприятие | ИД события | Условие вызова |
---|---|---|
GCEnd_V1 |
2 | Сборка мусора закончена. |
В таблице ниже представлены данные события.
Имя поля | Тип данных | Description |
---|---|---|
Count | win:UInt32 | Сборка мусора, n-я по счету. |
Глубина | win:UInt32 | Поколение, для которого выполнялась сборка. |
ClrInstanceID | win:UInt16 | Уникальный идентификатор экземпляра CLR или CoreCLR. |
Событие GCHeapStats_V1
В таблице ниже показаны ключевое слово и уровень.
Ключевое слово для вызова события | Уровень |
---|---|
GCKeyword (0x1) |
Информационный (4) |
В таблице ниже представлены сведения о событии.
Мероприятие | Идентификатор события | Description |
---|---|---|
GCHeapStats_V1 |
4 | Показывает статистику кучи по завершении каждой сборки мусора. |
В таблице ниже представлены данные события.
Имя поля | Тип данных | Description |
---|---|---|
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. |
Событие GCHeapStats_V2
В таблице ниже показаны ключевое слово и уровень.
Ключевое слово для вызова события | Уровень |
---|---|
GCKeyword (0x1) |
Информационный (4) |
В таблице ниже представлены сведения о событии.
Мероприятие | Идентификатор события | Description |
---|---|---|
GCHeapStats_V2 |
4 | Показывает статистику кучи по завершении каждой сборки мусора. |
В таблице ниже представлены данные события.
Имя поля | Тип данных | Description |
---|---|---|
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. |
GenerationSize4 | win:UInt64 | Размер кучи закрепленных объектов (в байтах). |
TotalPromotedSize4 | win:UInt64 | Число байт, оставшихся в куче закрепленных объектов после последней сборки. |
Событие GCCreateSegment_V1
В таблице ниже показаны ключевое слово и уровень.
Ключевое слово для вызова события | Уровень |
---|---|
GCKeyword (0x1) |
Информационный (4) |
В таблице ниже представлены сведения о событии.
Мероприятие | ИД события | Условие вызова |
---|---|---|
GCCreateSegment_V1 |
5 | Был создан новый сегмент сборки мусора. Кроме того, при включении трассировки для уже работающего процесса это событие создается для каждого существующего сегмента. |
В таблице ниже представлены данные события.
Имя поля | Тип данных | Description |
---|---|---|
Адрес | win:UInt64 | Адрес сегмента. |
Размер | win:UInt64 | Размер сегмента. |
Тип | win:UInt32 | 0x0 — куча маленьких объектов. 0x1 — куча больших объектов. 0x2 — куча только для чтения. |
ClrInstanceID | win:UInt16 | Уникальный идентификатор экземпляра CLR или CoreCLR. |
Обратите внимание, что размер сегментов, выделенных сборщиком мусора, зависит от реализации и может быть изменен в любое время, в том числе при периодических обновлениях. Приложение не должно делать никаких допущений относительно размера определенного сегмента, полагаться на него или пытаться настроить объем памяти, доступный для выделения сегментов.
Событие GCFreeSegment_V1
В таблице ниже показаны ключевое слово и уровень.
Ключевое слово для вызова события | Уровень |
---|---|
GCKeyword (0x1) |
Информационный (4) |
В таблице ниже представлены сведения о событии.
Мероприятие | ИД события | Условие вызова |
---|---|---|
GCFreeSegment_V1 |
6 | Сегмент сборки мусора был освобожден. |
В таблице ниже представлены данные события.
Имя поля | Тип данных | Description |
---|---|---|
Адрес | win:UInt64 | Адрес сегмента. |
ClrInstanceID | win:UInt16 | Уникальный идентификатор экземпляра CLR или CoreCLR. |
Событие GCRestartEEBegin_V1
В таблице ниже показаны ключевое слово и уровень.
Ключевое слово для вызова события | Уровень |
---|---|
GCKeyword (0x1) |
Информационный (4) |
В таблице ниже представлены сведения о событии.
Мероприятие | ИД события | Условие вызова |
---|---|---|
GCRestartEEBegin_V1 |
7 | Началось возобновление приостановленной среды CLR. |
Нет данных события.
Событие GCRestartEEEnd_V1
В таблице ниже показаны ключевое слово и уровень.
Ключевое слово для вызова события | Уровень |
---|---|
GCKeyword (0x1) |
Информационный (4) |
В таблице ниже представлены сведения о событии.
Мероприятие | Идентификатор события | Условие вызова |
---|---|---|
GCRestartEEEnd_V1 |
3 | Возобновление приостановленной среды CLR завершено. |
Нет данных события.
Событие GCSuspendEE_V1
В таблице ниже показаны ключевое слово и уровень.
Ключевое слово для вызова события | Уровень |
---|---|
GCKeyword (0x1) |
Информационный (4) |
В таблице ниже представлены сведения о событии.
Мероприятие | ИД события | Условие вызова |
---|---|---|
GCSuspendEE_V1 |
9 | Началась приостановка механизма выполнения сборки мусора. |
В таблице ниже представлены данные события.
Имя поля | Тип данных | Description |
---|---|---|
Причина | win:UInt16 | 0x0 — другое. 0x1 — сборка мусора. 0x2 — завершение работы домена приложения. 0x3 — свертка кода. 0x4 — завершение работы. 0x5 — отладчик. 0x6 — подготовка к сборке мусора. |
Count | win:UInt32 | Счетчик сборки мусора на текущий момент времени. Обычно после этого отображается последующее событие запуска сборки мусора, а значение увеличивается на 1 в соответствии с увеличением индекса сборки мусора в ходе этого процесса. |
ClrInstanceID | win:UInt16 | Уникальный идентификатор экземпляра CLR или CoreCLR. |
Событие GCSuspendEEEnd_V1
В таблице ниже показаны ключевое слово и уровень.
Ключевое слово для вызова события | Уровень |
---|---|
GCKeyword (0x1) |
Информационный (4) |
В таблице ниже представлены сведения о событии.
Мероприятие | ИД события | Условие вызова |
---|---|---|
GCSuspendEEEnd_V1 |
8 | Завершена приостановка механизма выполнения сборки мусора. |
Нет данных события.
Событие GCAllocationTick_V2
В таблице ниже показаны ключевое слово и уровень.
Ключевое слово для вызова события | Уровень |
---|---|
GCKeyword (0x1) |
Информационный (4) |
В таблице ниже представлены сведения о событии.
Мероприятие | ИД события | Условие вызова |
---|---|---|
GCAllocationTick_V2 |
10 | Каждый раз, когда на кучу объектов выделяется примерно 100 КБ. То есть SOH, LOH и POH накапливают свои выделенные байты отдельно. В серверной сборке выполняется на кучу. |
В таблице ниже представлены данные события.
Имя поля | Тип данных | Description |
---|---|---|
AllocationAmount | win:UInt32 | Размер выделения в байтах. Это значение является точным для выделений, размер которых меньше длины ULONG (4 294 967 295 байт). Если выделение больше, это поле содержит усеченное значение. Используйте AllocationAmount64 для очень больших выделений. |
AllocationKind | win:UInt32 | 0x0 — выделение для маленького объекта (выделение в куче маленьких объектов). 0x1 — выделение для большого объекта (выделение в куче больших объектов). 0x2 — закрепленное выделение объектов (выделение находится в закрепленной куче объектов). |
ClrInstanceID | win:UInt16 | Уникальный идентификатор экземпляра CLR или CoreCLR. |
AllocationAmount64 | win:UInt64 | Размер выделения в байтах. Это значение является точным для очень больших выделений. |
TypeId | win:Pointer | Адрес MethodTable. Если в ходе этого события было выделено несколько типов объектов, указывается адрес MethodTable, соответствующий последнему выделенному объекту (объекту, вызвавшему превышение порогового значения 100 КБ). |
TypeName | win:UnicodeString | Имя выделенного типа. Если в ходе этого события было выделено несколько типов объектов, указывается тип последнего выделенного объекта (объекта, вызвавшего превышение порогового значения 100 КБ). |
HeapIndex | win:UInt32 | Куча, в которой был выделен объект. Это значение равно 0 (нулю) при выполнении сборки мусора на рабочей станции. |
Событие GCAllocationTick_V3
В таблице ниже показаны ключевое слово и уровень.
Ключевое слово для вызова события | Уровень |
---|---|
GCKeyword (0x1) |
Информационный (4) |
В таблице ниже представлены сведения о событии.
Мероприятие | ИД события | Условие вызова |
---|---|---|
GCAllocationTick_V2 |
10 | Каждый раз, когда на кучу объектов выделяется примерно 100 КБ. То есть SOH, LOH и POH накапливают свои выделенные байты отдельно. В серверной сборке выполняется на кучу. |
В таблице ниже представлены данные события.
Имя поля | Тип данных | Description |
---|---|---|
AllocationAmount | win:UInt32 | Размер выделения в байтах. Это значение является точным для выделений, размер которых меньше длины ULONG (4 294 967 295 байт). Если выделение больше, это поле содержит усеченное значение. Используйте AllocationAmount64 для очень больших выделений. |
AllocationKind | win:UInt32 | 0x0 — выделение для маленького объекта (выделение в куче маленьких объектов). 0x1 — выделение для большого объекта (выделение в куче больших объектов). 0x2 — закрепленное выделение объектов (выделение находится в закрепленной куче объектов). |
ClrInstanceID | win:UInt16 | Уникальный идентификатор экземпляра CLR или CoreCLR. |
AllocationAmount64 | win:UInt64 | Размер выделения в байтах. Это значение является точным для очень больших выделений. |
TypeId | win:Pointer | Адрес MethodTable. Если в ходе этого события было выделено несколько типов объектов, указывается адрес MethodTable, соответствующий последнему выделенному объекту (объекту, вызвавшему превышение порогового значения 100 КБ). |
TypeName | win:UnicodeString | Имя выделенного типа. Если в ходе этого события было выделено несколько типов объектов, указывается тип последнего выделенного объекта (объекта, вызвавшего превышение порогового значения 100 КБ). |
HeapIndex | win:UInt32 | Куча, в которой был выделен объект. Это значение равно 0 (нулю) при выполнении сборки мусора на рабочей станции. |
Адрес | win:Pointer | Адрес последнего выделенного объекта. |
Событие GCFinalizersBegin_V1
В таблице ниже показаны ключевое слово и уровень.
Ключевое слово для вызова события | Уровень |
---|---|
GCKeyword (0x1) |
Информационный (4) |
В таблице ниже представлены сведения о событии.
Мероприятие | ИД события | Условие вызова |
---|---|---|
GCFinalizersBegin_V1 |
14 | Начало выполнения методов завершения. |
Нет данных события.
Событие GCFinalizersEnd_V1
В таблице ниже показаны ключевое слово и уровень.
Ключевое слово для вызова события | Уровень |
---|---|
GCKeyword (0x1) |
Информационный (4) |
В таблице ниже представлены сведения о событии.
Мероприятие | ИД события | Условие вызова |
---|---|---|
GCFinalizersEnd_V1 |
13 | Завершение выполнения методов завершения. |
В таблице ниже представлены данные события.
Имя поля | Тип данных | Description |
---|---|---|
Count | win:UInt32 | Число выполненных методов завершения. |
ClrInstanceID | win:UInt16 | Уникальный идентификатор экземпляра CLR или CoreCLR. |
Событие GCCreateConcurrentThread_V1
В таблице ниже показаны ключевое слово и уровень.
Ключевое слово для вызова события | Уровень |
---|---|
GCKeyword (0x1) |
Информационный (4) |
ThreadingKeyword (0x10000) |
Информационный (4) |
В таблице ниже представлены сведения о событии.
Мероприятие | ИД события | Условие вызова |
---|---|---|
GCCreateConcurrentThread_V1 |
11 | Был создан параллельный поток сборки мусора. |
Нет данных события.
Событие GCTerminateConcurrentThread_V1
В таблице ниже показаны ключевое слово и уровень.
Ключевое слово для вызова события | Уровень |
---|---|
GCKeyword (0x1) |
Информационный (4) |
ThreadingKeyword (0x10000) |
Информационный (4) |
В таблице ниже представлены сведения о событии.
Мероприятие | ИД события | Условие вызова |
---|---|---|
GCTerminateConcurrentThread_V1 |
12 | Параллельный поток сборки мусора был завершен. |
Нет данных события.