다음을 통해 공유


가비지 컬렉션 ETW 이벤트

이러한 이벤트는 가비지 수집과 관련된 정보를 수집합니다. 가비지 수집 수행 횟수, 가비지 수집 중에 해제된 메모리 양 등을 판별하는 작업을 포함하여 진단과 디버깅에 도움이 됩니다.

이 범주는 다음 이벤트로 구성됩니다.

GCStart_V1 Event

다음 표에서는 키워드와 수준을 보여 줍니다. 자세한 내용은 CLR ETW 키워드 and 수준을 참조하세요.

이벤트를 발생시키기 위한 키워드 Level
GCKeyword (0x1) 정보(4)

다음 표에서는 이벤트 정보를 보여 줍니다.

이벤트 이벤트 ID 발생 시기
GCStart_V1 1 가비지 수집이 시작되었습니다.

다음 표에서는 이벤트 데이터를 보여 줍니다.

필드 이름 데이터 형식 설명
개수 win:UInt32 n번째 가비지 수집입니다.
깊이 win:UInt32 수집되고 있는 세대입니다.
원인 win:UInt32 가비지 수집이 트리거된 이유입니다.

0x0 - 작은 개체 힙 할당.

0x1 - 발생됨.

0x2 - 메모리 부족.

0x3 - 비어 있음.

0x4 - 큰 개체 힙 할당.

0x5 - 공간 부족(작은 개체 힙용).

0x6 - 공간 부족(큰 개체 힙용).

0x7 - 발생하지만 차단으로 강제 적용되지 않음.

0x8 - 스트레스 테스트.

0x9 - 프로세스가 메모리가 낮고 GC가 유도된 것으로 관찰된 종료자 스레드입니다.

0x10 - GC를 유도하고 압축 GC로 요청한 사용자 코드입니다.
Type win:UInt32 0x0 - 가비지 수집 차단이 백그라운드 가비지 수집 외부에서 발생함.

0x1 - 백그라운드 가비지 수집.

0x2 - 가비지 수집 차단이 백그라운드 가비지 수집 중에 발생함.
ClrInstanceID win:UInt16 CLR 또는 CoreCLR 인스턴스에 대한 고유 ID입니다.

GCEnd_V1 Event

다음 표에서는 키워드와 수준을 보여 줍니다.

이벤트를 발생시키기 위한 키워드 Level
GCKeyword (0x1) 정보(4)

다음 표에서는 이벤트 정보를 보여 줍니다.

이벤트 이벤트 ID 발생 시기
GCEnd_V1 2 가비지 수집이 종료되었습니다.

다음 표에서는 이벤트 데이터를 보여 줍니다.

필드 이름 데이터 형식 설명
개수 win:UInt32 n번째 가비지 수집입니다.
깊이 win:UInt32 수집된 세대입니다.
ClrInstanceID win:UInt16 CLR 또는 CoreCLR 인스턴스에 대한 고유 ID입니다.

GCHeapStats_V1 Event

다음 표에서는 키워드와 수준을 보여 줍니다.

이벤트를 발생시키기 위한 키워드 Level
GCKeyword (0x1) 정보(4)

다음 표에서는 이벤트 정보를 보여 줍니다.

이벤트 이벤트 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입니다.

GCHeapStats_V2 이벤트

다음 표에서는 키워드와 수준을 보여 줍니다.

이벤트를 발생시키기 위한 키워드 Level
GCKeyword (0x1) 정보(4)

다음 표에서는 이벤트 정보를 보여 줍니다.

이벤트 이벤트 ID 설명
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 CLR 또는 CoreCLR 인스턴스에 대한 고유 ID입니다.
GenerationSize4 win:UInt64 고정된 개체 힙의 크기(바이트)입니다.
TotalPromotedSize4 win:UInt64 마지막 수집 후에 고정된 개체 힙에 남아 있는 바이트 수입니다.

GCCreateSegment_V1 Event

다음 표에서는 키워드와 수준을 보여 줍니다.

이벤트를 발생시키기 위한 키워드 Level
GCKeyword (0x1) 정보(4)

다음 표에서는 이벤트 정보를 보여 줍니다.

이벤트 이벤트 ID 발생 시기
GCCreateSegment_V1 5 새 가비지 수집 세그먼트가 만들어졌습니다. 또한 이미 실행 중인 프로세스에서 추적 기능이 사용되면 각 기존 세그먼트에 대해 이 이벤트가 발생합니다.

다음 표에서는 이벤트 데이터를 보여 줍니다.

필드 이름 데이터 형식 설명
주소 win:UInt64 세그먼트 주소입니다.
크기 win:UInt64 세그먼트 크기입니다.
Type win:UInt32 0x0 - 작은 개체 힙.

0x1 - 큰 개체 힙

0x2 - 읽기 전용 힙.
ClrInstanceID win:UInt16 CLR 또는 CoreCLR 인스턴스에 대한 고유 ID입니다.

가비지 수집기에서 할당되는 세그먼트 크기는 구현에 따라 다르며 정기적인 업데이트를 포함하여 언제든지 변경될 수 있습니다. 앱에서 특정 세그먼트 크기를 가정하거나 의존해서는 안 되며, 세그먼트 할당에 사용할 수 있는 메모리 크기를 구성하려고 해서도 안 됩니다.

GCFreeSegment_V1 Event

다음 표에서는 키워드와 수준을 보여 줍니다.

이벤트를 발생시키기 위한 키워드 Level
GCKeyword (0x1) 정보(4)

다음 표에서는 이벤트 정보를 보여 줍니다.

이벤트 이벤트 ID 발생 시기
GCFreeSegment_V1 6 가비지 수집 세그먼트가 해제되었습니다.

다음 표에서는 이벤트 데이터를 보여 줍니다.

필드 이름 데이터 형식 설명
주소 win:UInt64 세그먼트 주소입니다.
ClrInstanceID win:UInt16 CLR 또는 CoreCLR 인스턴스에 대한 고유 ID입니다.

GCRestartEEBegin_V1 Event

다음 표에서는 키워드와 수준을 보여 줍니다.

이벤트를 발생시키기 위한 키워드 Level
GCKeyword (0x1) 정보(4)

다음 표에서는 이벤트 정보를 보여 줍니다.

이벤트 이벤트 ID 발생 시기
GCRestartEEBegin_V1 7 공용 언어 런타임 일시 중단에서 다시 시작이 시작되었습니다.

이벤트 데이터가 없습니다.

GCRestartEEEnd_V1 Event

다음 표에서는 키워드와 수준을 보여 줍니다.

이벤트를 발생시키기 위한 키워드 Level
GCKeyword (0x1) 정보(4)

다음 표에서는 이벤트 정보를 보여 줍니다.

이벤트 이벤트 ID 발생 시기
GCRestartEEEnd_V1 3 공용 언어 런타임 일시 중단에서 다시 시작이 종료되었습니다.

이벤트 데이터가 없습니다.

GCSuspendEE_V1 Event

다음 표에서는 키워드와 수준을 보여 줍니다.

이벤트를 발생시키기 위한 키워드 Level
GCKeyword (0x1) 정보(4)

다음 표에서는 이벤트 정보를 보여 줍니다.

이벤트 이벤트 ID 발생 시기
GCSuspendEE_V1 9 가비지 수집에 대한 실행 엔진의 일시 중단이 시작됩니다.

다음 표에서는 이벤트 데이터를 보여 줍니다.

필드 이름 데이터 형식 설명
원인 win:UInt16 0x0 - 기타.

0x1 - 가비지 수집.

0x2 - 애플리케이션 도메인 중지.

0x3 - 코드 피칭.

0x4 - 종료.

0x5 - 디버거.

0x6 - 가비지 수집 준비.
Count win:UInt32 해당 시점의 GC 개수입니다. 일반적으로 이 이벤트 뒤에 후속 GC 시작 이벤트가 확인되고 가비지 수집 중에 GC 인덱스를 늘리면 해당 개수는 이 개수 + 1이 됩니다.
ClrInstanceID win:UInt16 CLR 또는 CoreCLR 인스턴스에 대한 고유 ID입니다.

GCSuspendEEEnd_V1 Event

다음 표에서는 키워드와 수준을 보여 줍니다.

이벤트를 발생시키기 위한 키워드 Level
GCKeyword (0x1) 정보(4)

다음 표에서는 이벤트 정보를 보여 줍니다.

이벤트 이벤트 ID 발생 시기
GCSuspendEEEnd_V1 8 가비지 수집에 대한 실행 엔진의 일시 중단이 종료됩니다.

이벤트 데이터가 없습니다.

GCAllocationTick_V2 Event

다음 표에서는 키워드와 수준을 보여 줍니다.

이벤트를 발생시키기 위한 키워드 Level
GCKeyword (0x1) 정보(4)

다음 표에서는 이벤트 정보를 보여 줍니다.

이벤트 이벤트 ID 발생 시기
GCAllocationTick_V2 10 개체 힙당 약 100KB가 할당될 때마다 즉, SOH, LOH 및 POH는 할당된 바이트를 별도로 누적합니다. 서버 GC에서 이 작업은 힙당 수행됩니다.

다음 표에서는 이벤트 데이터를 보여 줍니다.

필드 이름 데이터 형식 설명
AllocationAmount win:UInt32 할당 크기(바이트)입니다. 이 값은 ULONG 길이(4,294,967,295바이트)보다 적은 할당에 대해 정확합니다. 할당이 더 크면 이 필드에 잘린 값이 포함됩니다. 매우 큰 할당에 대해서는 AllocationAmount64 를 사용하세요.
AllocationKind win:UInt32 0x0 - 작은 개체 할당(할당이 작은 개체 힙에 포함됨).
0x1 - 큰 개체 할당(할당이 큰 개체 힙에 포함됨).
0x2 - 고정된 개체 할당(할당은 고정된 개체 힙에 있습니다).
ClrInstanceID win:UInt16 CLR 또는 CoreCLR 인스턴스에 대한 고유 ID입니다.
AllocationAmount64 win:UInt64 할당 크기(바이트)입니다. 이 값은 매우 큰 할당에 대해 정확합니다.
TypeId win:Pointer MethodTable 주소입니다. 이 이벤트 중에 여러 가지 개체 형식이 할당되었으면 이 항목은 할당된 마지막 개체(100KB 임계값을 초과한 개체)에 해당하는 MethodTable의 주소입니다.
TypeName win:UnicodeString 할당된 형식 이름입니다. 이 이벤트 중에 여러 가지 개체 형식이 할당되었으면 이 항목은 할당된 마지막 개체(100KB 임계값을 초과한 개체)의 형식입니다.
HeapIndex win:UInt32 개체가 할당된 힙입니다. 워크스테이션 가비지 수집에서 실행될 때 이 값은 0(영)입니다.

GCAllocationTick_V3 이벤트

다음 표에서는 키워드와 수준을 보여 줍니다.

이벤트를 발생시키기 위한 키워드 Level
GCKeyword (0x1) 정보(4)

다음 표에서는 이벤트 정보를 보여 줍니다.

이벤트 이벤트 ID 발생 시기
GCAllocationTick_V2 10 개체 힙당 약 100KB가 할당될 때마다 즉, SOH, LOH 및 POH는 할당된 바이트를 별도로 누적합니다. 서버 GC에서 이 작업은 힙당 수행됩니다.

다음 표에서는 이벤트 데이터를 보여 줍니다.

필드 이름 데이터 형식 설명
AllocationAmount win:UInt32 할당 크기(바이트)입니다. 이 값은 ULONG 길이(4,294,967,295바이트)보다 적은 할당에 대해 정확합니다. 할당이 더 크면 이 필드에 잘린 값이 포함됩니다. 매우 큰 할당에 대해서는 AllocationAmount64 를 사용하세요.
AllocationKind win:UInt32 0x0 - 작은 개체 할당(할당이 작은 개체 힙에 포함됨).
0x1 - 큰 개체 할당(할당이 큰 개체 힙에 포함됨).
0x2 - 고정된 개체 할당(할당은 고정된 개체 힙에 있습니다).
ClrInstanceID win:UInt16 CLR 또는 CoreCLR 인스턴스에 대한 고유 ID입니다.
AllocationAmount64 win:UInt64 할당 크기(바이트)입니다. 이 값은 매우 큰 할당에 대해 정확합니다.
TypeId win:Pointer MethodTable 주소입니다. 이 이벤트 중에 여러 가지 개체 형식이 할당되었으면 이 항목은 할당된 마지막 개체(100KB 임계값을 초과한 개체)에 해당하는 MethodTable의 주소입니다.
TypeName win:UnicodeString 할당된 형식 이름입니다. 이 이벤트 중에 여러 가지 개체 형식이 할당되었으면 이 항목은 할당된 마지막 개체(100KB 임계값을 초과한 개체)의 형식입니다.
HeapIndex win:UInt32 개체가 할당된 힙입니다. 워크스테이션 가비지 수집에서 실행될 때 이 값은 0(영)입니다.
주소 win:Pointer 마지막으로 할당된 개체의 주소입니다.

GCFinalizersBegin_V1 Event

다음 표에서는 키워드와 수준을 보여 줍니다.

이벤트를 발생시키기 위한 키워드 Level
GCKeyword (0x1) 정보(4)

다음 표에서는 이벤트 정보를 보여 줍니다.

이벤트 이벤트 ID 발생 시기
GCFinalizersBegin_V1 14 종료자 실행이 시작됩니다.

이벤트 데이터가 없습니다.

GCFinalizersEnd_V1 Event

다음 표에서는 키워드와 수준을 보여 줍니다.

이벤트를 발생시키기 위한 키워드 Level
GCKeyword (0x1) 정보(4)

다음 표에서는 이벤트 정보를 보여 줍니다.

이벤트 이벤트 ID 발생 시기
GCFinalizersEnd_V1 13 종료자 실행이 종료됩니다.

다음 표에서는 이벤트 데이터를 보여 줍니다.

필드 이름 데이터 형식 설명
개수 win:UInt32 실행된 종료자 수입니다.
ClrInstanceID win:UInt16 CLR 또는 CoreCLR 인스턴스에 대한 고유 ID입니다.

GCCreateConcurrentThread_V1 Event

다음 표에서는 키워드와 수준을 보여 줍니다.

이벤트를 발생시키기 위한 키워드 Level
GCKeyword (0x1) 정보(4)
ThreadingKeyword (0x10000) 정보(4)

다음 표에서는 이벤트 정보를 보여 줍니다.

이벤트 이벤트 ID 발생 시기
GCCreateConcurrentThread_V1 11 동시 가비지 수집 스레드가 만들어졌습니다.

이벤트 데이터가 없습니다.

GCTerminateConcurrentThread_V1 Event

다음 표에서는 키워드와 수준을 보여 줍니다.

이벤트를 발생시키기 위한 키워드 Level
GCKeyword (0x1) 정보(4)
ThreadingKeyword (0x10000) 정보(4)

다음 표에서는 이벤트 정보를 보여 줍니다.

이벤트 이벤트 ID 발생 시기
GCTerminateConcurrentThread_V1 12 동시 가비지 수집 스레드가 종료되었습니다.

이벤트 데이터가 없습니다.

참고 항목