События сборки мусора (трассировка событий Windows)

Эти события собирают сведения, относящиеся к сборке мусора. Они помогают при диагностике и отладке, в том числе позволяют определить, сколько раз осуществлялась сборка мусора, какой объем памяти был освобожден в ходе сборки мусора и т. д.

Эта категория состоит из следующих событий:

Событие 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 Параллельный поток сборки мусора был завершен.

Нет данных события.

См. также