.NET 런타임 가비지 수집 이벤트
이 문서에 설명된 이벤트는 가비지 수집과 관련된 정보를 수집합니다. 가비지 수집 수행 횟수, 가비지 수집 중에 해제된 메모리 양 등을 확인하는 작업을 포함하여 진단 및 디버깅에 도움이 됩니다. 진단 목적으로 이 이벤트를 사용하는 방법에 관한 자세한 내용은 .NET 애플리케이션 로그 및 추적을 참조하세요.
GCStart_V2 이벤트
다음 표에서는 키워드와 수준을 보여 줍니다.
이벤트를 발생시키기 위한 키워드 | Level |
---|---|
GCKeyword (0x1) |
정보(4) |
다음 표에서는 이벤트 정보를 보여 줍니다.
이벤트 | 이벤트 ID | 발생 시기 |
---|---|---|
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 인스턴스의 고유 ID입니다. |
GCEnd_V1 Event
다음 표에서는 키워드와 수준을 보여 줍니다.
이벤트를 발생시키기 위한 키워드 | Level |
---|---|
GCKeyword (0x1) |
정보(4) |
다음 표에서는 이벤트 정보를 보여 줍니다.
이벤트 | 이벤트 ID | 발생 시기 |
---|---|---|
GCEnd_V1 |
2 | 가비지 수집이 종료되었습니다. |
다음 표에서는 이벤트 데이터를 보여 줍니다.
필드 이름 | 데이터 형식 | 설명 |
---|---|---|
Count |
win:UInt32 |
n번째 가비지 수집입니다. |
Depth |
win:UInt32 |
수집된 세대입니다. |
ClrInstanceID |
win:UInt16 | 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 |
CoreCLR 인스턴스의 고유 ID입니다. |
GenerationSize4 |
win:UInt64 |
고정된 개체 힙의 크기(바이트)입니다. |
TotalPromotedSize4 |
win:UInt64 |
마지막 수집 후에 고정된 개체 힙에 남아 있는 바이트 수입니다. |
GCCreateSegment_V1 이벤트
다음 표에서는 키워드와 수준을 보여 줍니다.
이벤트를 발생시키기 위한 키워드 | Level |
---|---|
GCKeyword (0x1) |
정보(4) |
다음 표에서는 이벤트 정보를 보여 줍니다.
이벤트 | 이벤트 ID | 발생 시기 |
---|---|---|
GCCreateSegment_V1 |
5 | 새 가비지 수집 세그먼트가 만들어졌습니다. 또한 이미 실행 중인 프로세스에서 추적 기능이 사용되면 각 기존 세그먼트에 대해 이 이벤트가 발생합니다. |
다음 표에서는 이벤트 데이터를 보여 줍니다.
필드 이름 | 데이터 형식 | 설명 |
---|---|---|
Address |
win:UInt64 |
세그먼트 주소입니다. |
Size |
win:UInt64 |
세그먼트 크기입니다. |
Type |
win:UInt32 |
0x0 - 작은 개체 힙. 0x1 - 큰 개체 힙 0x2 - 읽기 전용 힙. |
ClrInstanceID |
win:UInt16 |
CoreCLR 인스턴스의 고유 ID입니다. |
가비지 수집기에서 할당되는 세그먼트 크기는 구현에 따라 다르며 정기적인 업데이트를 포함하여 언제든지 변경될 수 있습니다. 앱에서 특정 세그먼트 크기를 가정하거나 의존해서는 안 되며, 세그먼트 할당에 사용할 수 있는 메모리 크기를 구성하려고 해서도 안 됩니다.
GCFreeSegment_V1 이벤트
다음 표에서는 키워드와 수준을 보여 줍니다.
이벤트를 발생시키기 위한 키워드 | Level |
---|---|
GCKeyword (0x1) |
정보(4) |
다음 표에서는 이벤트 정보를 보여 줍니다.
이벤트 | 이벤트 ID | 발생 시기 |
---|---|---|
GCFreeSegment_V1 |
6 | 가비지 수집 세그먼트가 해제되었습니다. |
다음 표에서는 이벤트 데이터를 보여 줍니다.
필드 이름 | 데이터 형식 | 설명 |
---|---|---|
Address |
win:UInt64 |
세그먼트 주소입니다. |
ClrInstanceID |
win:UInt16 |
CoreCLR 인스턴스의 고유 ID입니다. |
GCRestartEEBegin_V1 이벤트
다음 표에서는 키워드와 수준을 보여 줍니다.
이벤트를 발생시키기 위한 키워드 | Level |
---|---|
GCKeyword (0x1) |
정보(4) |
다음 표에서는 이벤트 정보를 보여 줍니다.
이벤트 | 이벤트 ID | 발생 시기 |
---|---|---|
GCRestartEEBegin_V1 |
7 | 공용 언어 런타임 일시 중단에서 다시 시작이 시작되었습니다. |
이 이벤트에는 이벤트 데이터가 없습니다.
GCRestartEEEnd_V1 이벤트
다음 표에서는 키워드와 수준을 보여 줍니다.
이벤트를 발생시키기 위한 키워드 | Level |
---|---|
GCKeyword (0x1) |
정보(4) |
다음 표에서는 이벤트 정보를 보여 줍니다.
이벤트 | 이벤트 ID | 발생 시기 |
---|---|---|
GCRestartEEEnd_V1 |
3 | 공용 언어 런타임 일시 중단에서 다시 시작이 종료되었습니다. |
이 이벤트에는 이벤트 데이터가 없습니다.
GCSuspendEEEnd_V1 이벤트
다음 표에서는 키워드와 수준을 보여 줍니다.
이벤트를 발생시키기 위한 키워드 | Level |
---|---|
GCKeyword (0x1) |
정보(4) |
다음 표에서는 이벤트 정보를 보여 줍니다.
이벤트 | 이벤트 ID | 발생 시기 |
---|---|---|
GCSuspendEEEnd_V1 |
8 | 가비지 수집에 대한 실행 엔진의 일시 중단이 종료됩니다. |
이 이벤트에는 이벤트 데이터가 없습니다.
GCSuspendEEBegin_V1 이벤트
다음 표에서는 키워드와 수준을 보여 줍니다.
이벤트를 발생시키기 위한 키워드 | Level |
---|---|
GCKeyword (0x1) |
정보(4) |
다음 표에서는 이벤트 정보를 보여 줍니다.
이벤트 | 이벤트 ID | 발생 시기 |
---|---|---|
GCSuspendEEBegin_V1 |
9 | 가비지 수집에 대한 실행 엔진의 일시 중단이 시작됩니다. |
필드 이름 | 데이터 형식 | 설명 |
---|---|---|
Count |
win:UInt32 |
n번째 가비지 수집입니다. |
Reason |
win:UInt32 |
EE 일시 중단의 이유입니다.0x0 : 기타를 위해 일시 중단합니다.0x1 : GC를 위해 일시 중단합니다.0x2 : AppDomain 종료를 위해 일시 중단합니다.0x3 : 코드 피칭을 위해 일시 중단합니다.0x4 : 종료를 위해 일시 중단합니다.0x5 : 디버거를 위해 일시 중단합니다.0x6 : GC 준비를 위해 일시 중단합니다.0x7 : 디버거 스위프를 위해 일시 중단합니다. |
GCAllocationTick_V3 이벤트
다음 표에서는 키워드와 수준을 보여 줍니다.
이벤트를 발생시키기 위한 키워드 | Level |
---|---|
GCKeyword (0x1) |
자세한 정보 표시(5) |
다음 표에서는 이벤트 정보를 보여 줍니다.
이벤트 | 이벤트 ID | 발생 시기 |
---|---|---|
GCAllocationTick_V3 |
10 | 매번 100KB 정도가 할당됩니다. |
다음 표에서는 이벤트 데이터를 보여 줍니다.
필드 이름 | 데이터 형식 | 설명 |
---|---|---|
AllocationAmount |
win:UInt32 |
할당 크기(바이트)입니다. 이 값은 ULONG 길이(4,294,967,295바이트)보다 적은 할당에 대해 정확합니다. 할당이 더 크면 이 필드에 잘린 값이 포함됩니다. 매우 큰 할당에 대해서는 AllocationAmount64 를 사용하세요. |
AllocationKind |
win:UInt32 |
0x0 - 작은 개체 할당입니다(할당이 작은 개체 힙에 포함됨).0x1 - 큰 개체 할당입니다(할당이 큰 개체 힙에 포함됨). |
AllocationAmount64 |
win:UInt64 |
할당 크기(바이트)입니다. 이 값은 매우 큰 할당에 대해 정확합니다. |
TypeId |
win:Pointer |
MethodTable 주소입니다. 이 이벤트 중에 여러 가지 개체 형식이 할당되었으면 이 항목은 할당된 마지막 개체(100KB 임계값을 초과한 개체)에 해당하는 MethodTable의 주소입니다. |
TypeName |
win:UnicodeString |
할당된 형식 이름입니다. 이 이벤트 중에 여러 가지 개체 형식이 할당되었으면 이 항목은 할당된 마지막 개체(100KB 임계값을 초과한 개체)의 형식입니다. |
HeapIndex |
win:UInt32 |
개체가 할당된 힙입니다. 워크스테이션 가비지 수집에서 실행될 때 이 값은 0(영)입니다. |
Address |
win:Pointer |
마지막으로 할당된 개체의 주소입니다. |
ClrInstanceID |
win:UInt16 |
CoreCLR 인스턴스의 고유 ID입니다. |
GCCreateConcurrentThread_V1 이벤트
다음 표에서는 키워드와 수준을 보여 줍니다.
이벤트를 발생시키기 위한 키워드 | Level |
---|---|
GCKeyword (0x1) |
정보(4) |
ThreadingKeyword (0x10000) |
정보(4) |
다음 표에서는 이벤트 정보를 보여 줍니다.
이벤트 | 이벤트 ID | 발생 시기 |
---|---|---|
GCCreateConcurrentThread_V1 |
11 | 동시 가비지 수집 스레드가 만들어졌습니다. |
이 이벤트에는 이벤트 데이터가 없습니다.
GCTerminateConcurrentThread_V1 이벤트
다음 표에서는 키워드와 수준을 보여 줍니다.
이벤트를 발생시키기 위한 키워드 | Level |
---|---|
GCKeyword (0x1) |
정보(4) |
ThreadingKeyword (0x10000) |
정보(4) |
다음 표에서는 이벤트 정보를 보여 줍니다.
이벤트 | 이벤트 ID | 발생 시기 |
---|---|---|
GCTerminateConcurrentThread_V1 |
12 | 동시 가비지 수집 스레드가 종료되었습니다. |
이 이벤트에는 이벤트 데이터가 없습니다.
GCFinalizersBegin_V1 이벤트
다음 표에서는 키워드와 수준을 보여 줍니다.
이벤트를 발생시키기 위한 키워드 | Level |
---|---|
GCKeyword (0x1) |
정보(4) |
다음 표에서는 이벤트 정보를 보여 줍니다.
이벤트 | 이벤트 ID | 발생 시기 |
---|---|---|
GCFinalizersBegin_V1 |
14 | 종료자 실행이 시작됩니다. |
이 이벤트에는 이벤트 데이터가 없습니다.
GCFinalizersEnd_V1 이벤트
다음 표에서는 키워드와 수준을 보여 줍니다.
이벤트를 발생시키기 위한 키워드 | Level |
---|---|
GCKeyword (0x1) |
정보(4) |
다음 표에서는 이벤트 정보를 보여 줍니다.
이벤트 | 이벤트 ID | 발생 시기 |
---|---|---|
GCFinalizersEnd_V1 |
13 | 종료자 실행이 종료됩니다. |
다음 표에서는 이벤트 데이터를 보여 줍니다.
필드 이름 | 데이터 형식 | 설명 |
---|---|---|
Count |
win:UInt32 |
실행된 종료자 수입니다. |
ClrInstanceID |
win:UInt16 | CLR 또는 CoreCLR 인스턴스에 대한 고유 ID입니다. |
SetGCHandle 이벤트
다음 표에서는 키워드와 수준을 보여 줍니다.
이벤트를 발생시키기 위한 키워드 | Level |
---|---|
GCHandleKeyword (0x2) |
정보(4) |
다음 표에서는 이벤트 정보를 보여 줍니다.
이벤트 | 이벤트 ID | 발생 시기 |
---|---|---|
SetGCHandle |
30 | GC 핸들이 설정되었습니다. |
다음 표에서는 이벤트 데이터를 보여 줍니다.
필드 이름 | 데이터 형식 | 설명 |
---|---|---|
HandleID |
win:Pointer |
할당된 핸들의 주소입니다. |
ObjectID |
win:Pointer |
핸들이 만들어진 개체의 주소입니다. |
Kind |
win:UInt32 |
설정된 GC 핸들의 형식입니다. 0x0 : WeakShort 0x1 : WeakLong 0x2 :강한 0x3 :고정 0x4 : Variable0x5 : RefCounted 0x6 : Dependent0x7 : AsyncPinned0x8 : SizedRef |
Generation |
win:UInt32 |
핸들이 만들어진 개체의 세대입니다. |
AppDomainID |
win:UInt64 |
AppDomain ID입니다. |
ClrInstanceID |
win:UInt16 |
CoreCLR 인스턴스의 고유 ID입니다. |
DestroyGCHandle 이벤트
다음 표에서는 키워드와 수준을 보여 줍니다.
이벤트를 발생시키기 위한 키워드 | Level |
---|---|
GCHandleKeyword (0x2) |
정보(4) |
다음 표에서는 이벤트 정보를 보여 줍니다.
이벤트 | 이벤트 ID | 발생 시기 |
---|---|---|
DestroyGCHandle |
31 | GC 핸들이 제거되었습니다. |
다음 표에서는 이벤트 데이터를 보여 줍니다.
필드 이름 | 데이터 형식 | 설명 |
---|---|---|
HandleID |
win:Pointer |
제거된 핸들의 주소입니다. |
ClrInstanceID |
win:UInt16 | CoreCLR 인스턴스의 고유 ID입니다. |
PinObjectAtGCTime 이벤트
다음 표에서는 키워드와 수준을 보여 줍니다.
이벤트를 발생시키기 위한 키워드 | Level |
---|---|
GCKeyword (0x1) |
자세한 정보 표시(5) |
다음 표에서는 이벤트 정보를 보여 줍니다.
이벤트 | 이벤트 ID | 발생 시기 |
---|---|---|
PinObjectAtGCTime |
33 | GC 중에 개체가 고정되었습니다. |
다음 표에서는 이벤트 데이터를 보여 줍니다.
필드 이름 | 데이터 형식 | 설명 |
---|---|---|
HandleID |
win:Pointer |
핸들의 주소입니다. |
ObjectID |
win:Pointer |
고정된 개체의 주소입니다. |
ObjectSize |
win:UInt64 |
고정된 개체의 크기입니다. |
TypeName |
win:UnicodeString |
고정된 개체의 형식 이름입니다. |
ClrInstanceID |
win:UInt16 |
CoreCLR 인스턴스의 고유 ID입니다. |
GCTriggered 이벤트
다음 표에서는 키워드와 수준을 보여 줍니다.
이벤트를 발생시키기 위한 키워드 | Level |
---|---|
GCKeyword (0x1) |
자세한 정보 표시(5) |
다음 표에서는 이벤트 정보를 보여 줍니다.
이벤트 | 이벤트 ID | 발생 시기 |
---|---|---|
GCTriggered |
35 | GC가 트리거되었습니다. |
다음 표에서는 이벤트 데이터를 보여 줍니다.
필드 이름 | 데이터 형식 | 설명 |
---|---|---|
Reason |
win:UInt32 |
GC가 트리거된 이유입니다.0x0 : AllocSmall0x1 :유도 0x2 : LowMemory 0x3 :빈 0x4 : AllocLarge 0x5 : OutOfSpaceSmallObjectHeap 0x6 : OutOfSpaceLargeObjectHeap 0x7 :InducedNoForce 0x8 :스트레스 0x9 : InducedLowMemory |
ClrInstanceID |
win:UInt16 |
CoreCLR 인스턴스의 고유 ID입니다. |
IncreaseMemoryPressure 이벤트
다음 표에서는 키워드와 수준을 보여 줍니다.
이벤트를 발생시키기 위한 키워드 | Level |
---|---|
GCKeyword (0x1) |
정보(4) |
다음 표에서는 이벤트 정보를 보여 줍니다.
이벤트 | 이벤트 ID | 발생 시기 |
---|---|---|
IncreaseMemoryPressure |
200 | 메모리 압력이 증가했습니다. |
다음 표에서는 이벤트 데이터를 보여 줍니다.
필드 이름 | 데이터 형식 | 설명 |
---|---|---|
ClrInstanceID |
win:UInt16 | CoreCLR 인스턴스의 고유 ID입니다. |
DecreaseMemoryPressure 이벤트
다음 표에서는 키워드와 수준을 보여 줍니다.
이벤트를 발생시키기 위한 키워드 | Level |
---|---|
GCKeyword (0x1) |
정보(4) |
다음 표에서는 이벤트 정보를 보여 줍니다.
이벤트 | 이벤트 ID | 발생 시기 |
---|---|---|
DecreaseMemoryPressure |
201 | 메모리 압력이 감소했습니다. |
다음 표에서는 이벤트 데이터를 보여 줍니다.
필드 이름 | 데이터 형식 | 설명 |
---|---|---|
BytesFreed |
win:UInt32 |
해제된 바이트입니다. |
ClrInstanceID |
win:UInt16 |
CoreCLR 인스턴스의 고유 ID입니다. |
GCMarkWithType 이벤트
다음 표에서는 키워드와 수준을 보여 줍니다.
이벤트를 발생시키기 위한 키워드 | Level |
---|---|
GCKeyword (0x1) |
정보(4) |
다음 표에서는 이벤트 정보를 보여 줍니다.
이벤트 | 이벤트 ID | 발생 시기 |
---|---|---|
GCMarkWithType |
202 | GC 표시 단계 중에 GC 루트가 표시되었습니다. |
다음 표에서는 이벤트 데이터를 보여 줍니다.
필드 이름 | 데이터 형식 | 설명 |
---|---|---|
HeapNum |
win:UInt32 |
힙 번호입니다. |
ClrInstanceID |
win:UInt16 | CoreCLR 인스턴스의 고유 ID입니다. |
Type |
win:UInt32 |
GC 루트 형식입니다.0x0 : Stack0x1 : Finalizer0x2 : Handle0x3 : Older0x4 : SizedRef0x5 : Overflow |
Bytes |
win:UInt64 |
표시된 바이트 수입니다. |
GCJoin_V2 이벤트
다음 표에서는 키워드와 수준을 보여 줍니다.
이벤트를 발생시키기 위한 키워드 | Level |
---|---|
GCKeyword (0x1) |
자세한 정보 표시(5) |
다음 표에서는 이벤트 정보를 보여 줍니다.
이벤트 | 이벤트 ID | 발생 시기 |
---|---|---|
GCJoin_V2 |
203 | 조인된 GC 스레드입니다. |
다음 표에서는 이벤트 데이터를 보여 줍니다.
필드 이름 | 데이터 형식 | 설명 |
---|---|---|
Heap |
win:UInt32 |
힙 번호입니다. |
JoinTime |
win:UInt32 |
이 이벤트가 조인 시작 또는 조인 종료 시 발생하는지를 나타냅니다(조인 시작의 경우 0x0 , 조인 종료의 경우 0x1 ). |
JoinType |
win:UInt32 |
조인 형식입니다. 0x0 : 마지막 조인0x1 :가입 0x2 :다시 시작할 0x3 : 첫 번째 역방향 조인0x4 : 역방향 조인 |
ClrInstanceID |
win:UInt16 |
CoreCLR 인스턴스의 고유 ID입니다. |
.NET