다음을 통해 공유


가비지 수집 ETW 이벤트

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

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

GCStart_V1 이벤트

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

이벤트를 발생시키는 키워드 수준
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로 요청했습니다.
win:UInt32 0x0 - 백그라운드 가비지 수집 외부에서 가비지 수집 차단이 발생했습니다.

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

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

GCEnd_V1 이벤트

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

이벤트를 발생시키는 키워드 수준
GCKeyword(0x1) 정보 제공 (4)

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

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

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

필드 이름 데이터 형식 묘사
세다 win:UInt32 n가비지 수집입니다.
깊이 win:UInt32 수집된 세대입니다.
ClrInstanceID win:UInt16 CLR 또는 CoreCLR 인스턴스의 고유 ID입니다.

GCHeapStats_V1 이벤트

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

이벤트를 발생시키는 키워드 수준
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 이벤트

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

이벤트를 발생시키는 키워드 수준
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 이벤트

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

이벤트를 발생시키는 키워드 수준
GCKeyword(0x1) 정보 제공 (4)

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

이벤트 이벤트 ID 발생 시기
GCCreateSegment_V1 5 새 가비지 수집 세그먼트가 만들어졌습니다. 또한 이미 실행 중인 프로세스에서 추적을 사용하도록 설정하면 기존 세그먼트마다 이 이벤트가 발생합니다.

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

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

0x1 - 큰 개체 힙입니다.

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

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

GCFreeSegment_V1 이벤트

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

이벤트를 발생시키는 키워드 수준
GCKeyword(0x1) 정보 제공 (4)

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

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

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

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

GCRestartEEBegin_V1 이벤트

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

이벤트를 발생시키는 키워드 수준
GCKeyword(0x1) 정보 제공 (4)

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

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

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

GCRestartEEEnd_V1 이벤트

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

이벤트를 발생시키는 키워드 수준
GCKeyword(0x1) 정보 제공 (4)

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

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

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

GCSuspendEE_V1 이벤트

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

이벤트를 발생시키는 키워드 수준
GCKeyword(0x1) 정보 제공 (4)

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

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

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

필드 이름 데이터 형식 묘사
이유 win:UInt16 0x0 - 기타.

0x1 - 가비지 수집.

0x2 - 애플리케이션 도메인 종료.

0x3 - 코드 피칭.

0x4 - 종료.

0x5 - 디버거.

0x6 - 가비지 수집 준비
세다 win:UInt32 당시의 GC 수입니다. 일반적으로 이후에 후속 GC 시작 이벤트가 표시되며 가비지 수집 중에 GC 인덱스가 늘어나면 개수가 이 개수 + 1이 됩니다.
ClrInstanceID win:UInt16 CLR 또는 CoreCLR 인스턴스의 고유 ID입니다.

GCSuspendEEEnd_V1 이벤트

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

이벤트를 발생시키는 키워드 수준
GCKeyword(0x1) 정보 제공 (4)

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

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

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

GCAllocationTick_V2 이벤트

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

이벤트를 발생시키는 키워드 수준
GCKeyword(0x1) 자세한 정보 표시 (5)

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

이벤트 이벤트 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 이벤트

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

이벤트를 발생시키는 키워드 수준
GCKeyword(0x1) 자세한 정보 표시 (5)

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

이벤트 이벤트 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 이벤트

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

이벤트를 발생시키는 키워드 수준
GCKeyword(0x1) 정보 제공 (4)

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

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

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

GCFinalizersEnd_V1 이벤트

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

이벤트를 발생시키는 키워드 수준
GCKeyword(0x1) 정보 제공 (4)

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

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

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

필드 이름 데이터 형식 묘사
세다 win:UInt32 실행된 종료자 수입니다.
ClrInstanceID win:UInt16 CLR 또는 CoreCLR 인스턴스의 고유 ID입니다.

GCCreateConcurrentThread_V1 이벤트

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

이벤트를 발생시키는 키워드 수준
GCKeyword(0x1) 정보 제공 (4)
ThreadingKeyword(0x10000) 정보 제공 (4)

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

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

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

GCTerminateConcurrentThread_V1 이벤트

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

이벤트를 발생시키는 키워드 수준
GCKeyword(0x1) 정보 제공 (4)
ThreadingKeyword(0x10000) 정보 제공 (4)

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

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

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

참고 항목

  • CLR ETW 이벤트