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


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

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

Событие GCStart_V2

В следующей таблице показано ключевое слово и уровень:

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

В следующей таблице показаны сведения о событии:

Событие Идентификатор события Возникает, когда
GCStart_V1 1 Сборка мусора началась.

В следующей таблице показаны данные о событии:

Имя поля Тип данных Описание
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 Сборка мусора закончилась.

В следующей таблице показаны данные о событии:

Имя поля Тип данных Описание
Count win:UInt32 Сборка мусора n.
Depth win:UInt32 Поколение, которое было собрано.
ClrInstanceID win:UInt16 Уникальный идентификатор для экземпляра CoreCLR.

Событие GCHeapStats_V2

В следующей таблице показано ключевое слово и уровень:

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

В следующей таблице показаны сведения о событии:

Событие Идентификатор события Описание
GCHeapStats_V2 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 Уникальный идентификатор для экземпляра CoreCLR.
GenerationSize4 win:UInt64 Размер кучи закрепленного объекта в байтах.
TotalPromotedSize4 win:UInt64 Количество байтов, которые выжили в кучи закрепленных объектов после последней коллекции.

событие GCCreateSegment_V1

В следующей таблице показано ключевое слово и уровень:

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

В следующей таблице показаны сведения о событии:

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

В следующей таблице показаны данные о событии:

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

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

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

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

событие GCFreeSegment_V1

В следующей таблице показано ключевое слово и уровень:

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

В следующей таблице показаны сведения о событии:

Событие Идентификатор события Возникает, когда
GCFreeSegment_V1 6 Выпущен сегмент сборки мусора.

В следующей таблице показаны данные о событии:

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

событие GCRestartEEBegin_V1

В следующей таблице показано ключевое слово и уровень:

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

В следующей таблице показаны сведения о событии:

Событие Идентификатор события Возникает, когда
GCRestartEEBegin_V1 7 Началось возобновление приостановки среды CLR.

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

событие GCRestartEEEnd_V1

В следующей таблице показано ключевое слово и уровень:

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

В следующей таблице показаны сведения о событии:

Событие Идентификатор события Возникает, когда
GCRestartEEEnd_V1 3 Возобновление приостановки среды cl language runtime завершено.

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

событие GCSuspendEEEnd_V1

В следующей таблице показано ключевое слово и уровень:

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

В следующей таблице показаны сведения о событии:

Событие Идентификатор события Возникает, когда
GCSuspendEEEnd_V1 8 Завершение приостановки подсистемы выполнения для сборки мусора.

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

событие GCSuspendEEBegin_V1

В следующей таблице показано ключевое слово и уровень:

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

В следующей таблице показаны сведения о событии:

Событие Идентификатор события Возникает, когда
GCSuspendEEBegin_V1 9 Начало приостановки подсистемы выполнения для сборки мусора.
Имя поля Тип данных Описание
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 КБ.

В следующей таблице показаны данные о событии:

Имя поля Тип данных Описание
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 Конец выполнения методов завершения.

В следующей таблице показаны данные о событии:

Имя поля Тип данных Описание
Count win:UInt32 Количество запущенных средств завершения.
ClrInstanceID win:UInt16 Уникальный идентификатор для экземпляра СРЕДЫ CLR или CoreCLR.

Событие SetGCHandle

В следующей таблице показано ключевое слово и уровень:

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

В следующей таблице показаны сведения о событии:

Событие Идентификатор события Возникает, когда
SetGCHandle 30 Задан дескриптор GC.

В следующей таблице показаны данные о событии:

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

0x0: WeakShort

0x1: WeakLong

0x2: сильный

0x3: закреплено

0x4: переменная

0x5: RefCounted

0x6: зависимый

0x7: AsyncPinned

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

Событие DestroyGCHandle

В следующей таблице показано ключевое слово и уровень:

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

В следующей таблице показаны сведения о событии:

Событие Идентификатор события Возникает, когда
DestroyGCHandle 31 Дескриптор GC уничтожается.

В следующей таблице показаны данные о событии:

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

Событие PinObjectAtGCTime

В следующей таблице показано ключевое слово и уровень:

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

В следующей таблице показаны сведения о событии:

Событие Идентификатор события Возникает, когда
PinObjectAtGCTime 33 Объект был закреплен во время сборки мусора.

В следующей таблице показаны данные о событии:

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

Событие GCTriggered

В следующей таблице показано ключевое слово и уровень:

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

В следующей таблице показаны сведения о событии:

Событие Идентификатор события Возникает, когда
GCTriggered 35 Был активирован GC.

В следующей таблице показаны данные о событии:

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

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 Давление памяти было увеличено.

В следующей таблице показаны данные о событии:

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

Событие DecreaseMemoryPressure

В следующей таблице показано ключевое слово и уровень:

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

В следующей таблице показаны сведения о событии:

Событие Идентификатор события Возникает, когда
DecreaseMemoryPressure 201 Давление памяти сократилось.

В следующей таблице показаны данные о событии:

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

Событие GCMarkWithType

В следующей таблице показано ключевое слово и уровень:

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

В следующей таблице показаны сведения о событии:

Событие Идентификатор события Возникает, когда
GCMarkWithType 202 Корневой каталог GC отмечен во время этапа разметки GC.

В следующей таблице показаны данные о событии:

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

0x0: стек

0x1: метод завершения

0x2: дескриптор

0x3: старые

0x4: SizedRef

0x5: переполнение

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

событие GCJoin_V2

В следующей таблице показано ключевое слово и уровень:

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

В следующей таблице показаны сведения о событии:

Событие Идентификатор события Возникает, когда
GCJoin_V2 203 Присоединенный поток GC.

В следующей таблице показаны данные о событии:

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

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

0x1: присоединение

0x2: перезапуск

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

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

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