Поделиться через


События сборки мусора среды выполнения .NET

События, описанные в этой статье, собирают сведения, относящиеся к сборке мусора. Они помогают в диагностике и отладке, включая определение того, сколько раз выполнялась сборка мусора, сколько памяти было освобождено во время сборки мусора и т. д. Дополнительные сведения об использовании этих событий в целях диагностики см. в разделе Ведение журнала и трассировка приложений .NET.

Событие GCStart_V2

В таблице ниже показаны ключевое слово и уровень.

Ключевое слово для вызова события Уровень
GCKeyword (0x1) Информационный (4)

В таблице ниже представлены сведения о событии.

Мероприятие ИД события Условие вызова
GCStart_V1 1 Сборка мусора начата.

В таблице ниже представлены данные события.

Имя поля Тип данных Description
Count win:UInt32 Сборка мусора, n-я по счету.
Depth win:UInt32 Поколение, для которого выполняется сборка.
Reason win:UInt32 Причина запуска сборки мусора:

0x0 — выделение кучи маленьких объектов.

0x1 — принудительная.

0x2 — нехватка памяти.

0x3 — пусто.

0x4 — выделение кучи больших объектов.

0x5 — недостаточно места (для кучи маленьких объектов).

0x6 — недостаточно места (для кучи больших объектов).

0x7 — принудительная, но не блокирующая.
Type win:UInt32 0x0 — блокирующая сборка мусора произошла за пределами фоновой сборки мусора.

0x1 — фоновая сборка мусора.

0x2 — блокирующая сборка мусора произошла во время фоновой сборки мусора.
ClrInstanceID win:UInt16 Уникальный идентификатор для экземпляра CoreCLR.

Событие GCEnd_V1

В таблице ниже показаны ключевое слово и уровень.

Ключевое слово для вызова события Уровень
GCKeyword (0x1) Информационный (4)

В таблице ниже представлены сведения о событии.

Мероприятие ИД события Условие вызова
GCEnd_V1 2 Сборка мусора закончена.

В таблице ниже представлены данные события.

Имя поля Тип данных Description
Count win:UInt32 Сборка мусора, n-я по счету.
Depth win:UInt32 Поколение, для которого выполнялась сборка.
ClrInstanceID win:UInt16 Уникальный идентификатор для экземпляра 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 Уникальный идентификатор для экземпляра CoreCLR.
GenerationSize4 win:UInt64 Размер кучи закрепленных объектов (в байтах).
TotalPromotedSize4 win:UInt64 Число байт, оставшихся в куче закрепленных объектов после последней сборки.

Событие GCCreateSegment_V1

В таблице ниже показаны ключевое слово и уровень.

Ключевое слово для вызова события Уровень
GCKeyword (0x1) Информационный (4)

В таблице ниже представлены сведения о событии.

Мероприятие ИД события Условие вызова
GCCreateSegment_V1 5 Был создан новый сегмент сборки мусора. Кроме того, при включении трассировки для уже работающего процесса это событие создается для каждого существующего сегмента.

В таблице ниже представлены данные события.

Имя поля Тип данных Description
Address win:UInt64 Адрес сегмента.
Size win:UInt64 Размер сегмента.
Type win:UInt32 0x0 — куча маленьких объектов.

0x1 — куча больших объектов.

0x2 — куча только для чтения.
ClrInstanceID win:UInt16 Уникальный идентификатор для экземпляра CoreCLR.

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

Событие GCFreeSegment_V1

В таблице ниже показаны ключевое слово и уровень.

Ключевое слово для вызова события Уровень
GCKeyword (0x1) Информационный (4)

В таблице ниже представлены сведения о событии.

Мероприятие ИД события Условие вызова
GCFreeSegment_V1 6 Сегмент сборки мусора был освобожден.

В таблице ниже представлены данные события.

Имя поля Тип данных Description
Address win:UInt64 Адрес сегмента.
ClrInstanceID win:UInt16 Уникальный идентификатор для экземпляра CoreCLR.

Событие GCRestartEEBegin_V1

В таблице ниже показаны ключевое слово и уровень.

Ключевое слово для вызова события Уровень
GCKeyword (0x1) Информационный (4)

В таблице ниже представлены сведения о событии.

Мероприятие ИД события Условие вызова
GCRestartEEBegin_V1 7 Началось возобновление приостановленной среды CLR.

Это событие не содержит данных о событиях.

Событие GCRestartEEEnd_V1

В таблице ниже показаны ключевое слово и уровень.

Ключевое слово для вызова события Уровень
GCKeyword (0x1) Информационный (4)

В таблице ниже представлены сведения о событии.

Мероприятие Идентификатор события Условие вызова
GCRestartEEEnd_V1 3 Возобновление приостановленной среды CLR завершено.

Это событие не содержит данных о событиях.

GCSuspendEEEnd_V1 event

В таблице ниже показаны ключевое слово и уровень.

Ключевое слово для вызова события Уровень
GCKeyword (0x1) Информационный (4)

В таблице ниже представлены сведения о событии.

Мероприятие ИД события Условие вызова
GCSuspendEEEnd_V1 8 Завершена приостановка механизма выполнения сборки мусора.

Это событие не содержит данных о событиях.

Событие GCSuspendEEBegin_V1

В таблице ниже показаны ключевое слово и уровень.

Ключевое слово для вызова события Уровень
GCKeyword (0x1) Информационный (4)

В таблице ниже представлены сведения о событии.

Мероприятие ИД события Условие вызова
GCSuspendEEBegin_V1 9 Началась приостановка механизма выполнения сборки мусора.
Имя поля Тип данных Description
Count win:UInt32 Сборка мусора, n-я по счету.
Reason win:UInt32 Причина приостановки EE.

0x0: приостановка по другой причине.

0x1: приостановка для GC.

0x2: приостановка для завершения работы AppDomain.

0x3: приостановка для пошагового выполнения кода.

0x4: приостановка для завершения работы.

0x5: приостановка для отладчика.

0x6: приостановка для подготовки GC.

0x7: приостановка для очистки отладчика.

Событие GCAllocationTick_V3

В таблице ниже показаны ключевое слово и уровень.

Ключевое слово для вызова события Уровень
GCKeyword (0x1) Подробный (5)

В таблице ниже представлены сведения о событии.

Мероприятие ИД события Условие вызова
GCAllocationTick_V3 10 Каждый раз выделяется около 100 КБ.

В таблице ниже представлены данные события.

Имя поля Тип данных Description
AllocationAmount win:UInt32 Размер выделения в байтах. Это значение является точным для выделений, размер которых меньше длины ULONG (4 294 967 295 байт). Если выделение больше, это поле содержит усеченное значение. Используйте AllocationAmount64 для очень больших выделений.
AllocationKind win:UInt32 0x0 — выделение маленького объекта (выделение в куче маленьких объектов).

0x1 — выделение большого объекта (выделение в куче больших объектов).
AllocationAmount64 win:UInt64 Размер выделения в байтах. Это значение является точным для очень больших выделений.
TypeId win:Pointer Адрес MethodTable. Если в ходе этого события было выделено несколько типов объектов, указывается адрес MethodTable, соответствующий последнему выделенному объекту (объекту, вызвавшему превышение порогового значения 100 КБ).
TypeName win:UnicodeString Имя выделенного типа. Если в ходе этого события было выделено несколько типов объектов, указывается тип последнего выделенного объекта (объекта, вызвавшего превышение порогового значения 100 КБ).
HeapIndex win:UInt32 Куча, в которой был выделен объект. Это значение равно 0 (нулю) при выполнении сборки мусора на рабочей станции.
Address win:Pointer Адрес последнего выделенного объекта.
ClrInstanceID win:UInt16 Уникальный идентификатор для экземпляра CoreCLR.

Событие GCCreateConcurrentThread_V1

В таблице ниже показаны ключевое слово и уровень.

Ключевое слово для вызова события Уровень
GCKeyword (0x1) Информационный (4)
ThreadingKeyword (0x10000) Информационный (4)

В таблице ниже представлены сведения о событии.

Мероприятие ИД события Условие вызова
GCCreateConcurrentThread_V1 11 Был создан параллельный поток сборки мусора.

Это событие не содержит данных о событиях.

Событие GCTerminateConcurrentThread_V1

В таблице ниже показаны ключевое слово и уровень.

Ключевое слово для вызова события Уровень
GCKeyword (0x1) Информационный (4)
ThreadingKeyword (0x10000) Информационный (4)

В таблице ниже представлены сведения о событии.

Мероприятие ИД события Условие вызова
GCTerminateConcurrentThread_V1 12 Параллельный поток сборки мусора был завершен.

Это событие не содержит данных о событиях.

Событие 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.

Событие SetGCHandle

В таблице ниже показаны ключевое слово и уровень.

Ключевое слово для вызова события Уровень
GCHandleKeyword (0x2) Информационный (4)

В таблице ниже представлены сведения о событии.

Мероприятие ИД события Условие вызова
SetGCHandle 30 Дескриптор сборки мусора установлен.

В таблице ниже представлены данные события.

Имя поля Тип данных Description
HandleID win:Pointer Адрес выделенного дескриптора.
ObjectID win:Pointer Адрес объекта, дескриптор которого был создан.
Kind win:UInt32 Тип установленного дескриптора сборки мусора.

0x0: WeakShort

0x1: WeakLong

0x2:Сильный

0x3:Закрепленных

0x4: Variable

0x5: RefCounted

0x6: Dependent

0x7: AsyncPinned

0x8: SizedRef
Generation win:UInt32 Генерация объекта, дескриптор которого был создан.
AppDomainID win:UInt64 Идентификатор AppDomain.
ClrInstanceID win:UInt16 Уникальный идентификатор для экземпляра CoreCLR.

Событие DestroyGCHandle

В таблице ниже показаны ключевое слово и уровень.

Ключевое слово для вызова события Уровень
GCHandleKeyword (0x2) Информационный (4)

В таблице ниже представлены сведения о событии.

Мероприятие ИД события Условие вызова
DestroyGCHandle 31 Дескриптор GC удален.

В таблице ниже представлены данные события.

Имя поля Тип данных Description
HandleID win:Pointer Адрес удаленного дескриптора.
ClrInstanceID win:UInt16 Уникальный идентификатор для экземпляра CoreCLR.

Событие PinObjectAtGCTime

В таблице ниже показаны ключевое слово и уровень.

Ключевое слово для вызова события Уровень
GCKeyword (0x1) Подробный (5)

В таблице ниже представлены сведения о событии.

Мероприятие ИД события Условие вызова
PinObjectAtGCTime 33 Объект был закреплен во время сборки мусора.

В таблице ниже представлены данные события.

Имя поля Тип данных Description
HandleID win:Pointer Адрес дескриптора.
ObjectID win:Pointer Адрес закрепленного объекта.
ObjectSize win:UInt64 Размер закрепленного объекта.
TypeName win:UnicodeString Имя типа закрепленного объекта.
ClrInstanceID win:UInt16 Уникальный идентификатор для экземпляра CoreCLR.

Событие GCTriggered

В таблице ниже показаны ключевое слово и уровень.

Ключевое слово для вызова события Уровень
GCKeyword (0x1) Подробный (5)

В таблице ниже представлены сведения о событии.

Мероприятие ИД события Условие вызова
GCTriggered 35 Сборка мусора активирована.

В таблице ниже представлены данные события.

Имя поля Тип данных Description
Reason win:UInt32 Причина активации сборки мусора.

0x0: AllocSmall

0x1:Индуцированной

0x2: LowMemory

0x3:Пустой

0x4: AllocLarge

0x5: OutOfSpaceSmallObjectHeap

0x6: OutOfSpaceLargeObjectHeap

0x7:InducedNoForce

0x8:Стресс

0x9: InducedLowMemory
ClrInstanceID win:UInt16 Уникальный идентификатор для экземпляра CoreCLR.

Событие IncreaseMemoryPressure

В таблице ниже показаны ключевое слово и уровень.

Ключевое слово для вызова события Уровень
GCKeyword (0x1) Информация (4)

В таблице ниже представлены сведения о событии.

Мероприятие ИД события Условие вызова
IncreaseMemoryPressure 200 Повысилась нехватка памяти.

В таблице ниже представлены данные события.

Имя поля Тип данных Description
ClrInstanceID win:UInt16 Уникальный идентификатор для экземпляра CoreCLR.

Событие DecreaseMemoryPressure

В таблице ниже показаны ключевое слово и уровень.

Ключевое слово для вызова события Уровень
GCKeyword (0x1) Информация (4)

В таблице ниже представлены сведения о событии.

Мероприятие ИД события Условие вызова
DecreaseMemoryPressure 201 Уменьшилась нехватка памяти.

В таблице ниже представлены данные события.

Имя поля Тип данных Description
BytesFreed win:UInt32 Освобождено байт.
ClrInstanceID win:UInt16 Уникальный идентификатор для экземпляра CoreCLR.

Событие GCMarkWithType

В таблице ниже показаны ключевое слово и уровень.

Ключевое слово для вызова события Уровень
GCKeyword (0x1) Информация (4)

В таблице ниже представлены сведения о событии.

Мероприятие ИД события Условие вызова
GCMarkWithType 202 Корень сборки мусора был помечен на этапе пометки сборки мусора.

В таблице ниже представлены данные события.

Имя поля Тип данных Description
HeapNum win:UInt32 Номер кучи.
ClrInstanceID win:UInt16 Уникальный идентификатор для экземпляра CoreCLR.
Type win:UInt32 Корневой тип сборки мусора.

0x0: Stack

0x1: Finalizer

0x2: Handle

0x3: Older

0x4: SizedRef

0x5: Overflow

Bytes win:UInt64 Число помеченных байт.

Событие GCJoin_V2

В таблице ниже показаны ключевое слово и уровень.

Ключевое слово для вызова события Уровень
GCKeyword (0x1) Подробный (5)

В таблице ниже представлены сведения о событии.

Мероприятие ИД события Условие вызова
GCJoin_V2 203 Поток сборки мусора присоединен.

В таблице ниже представлены данные события.

Имя поля Тип данных Description
Heap win:UInt32 Номер кучи
JoinTime win:UInt32 Указывает, инициируется ли это событие в начале соединения или при окончании соединения (0x0 для начала соединения, 0x1 для окончания соединения)
JoinType win:UInt32 Тип соединения.

0x0: последнее соединение

0x1:Присоединиться к

0x2:Перезапустить

0x3: первое обратное соединение

0x4: обратное соединение

ClrInstanceID win:UInt16 Уникальный идентификатор для экземпляра CoreCLR.