메모리 성능 카운터

성능 콘솔 .NET CLR 메모리 범주에는 가비지 수집기 정보를 제공하는 카운터가 포함됩니다. 다음 표에서는 이러한 성능 카운터에 대해 설명합니다.

성능 카운터

설명

# Bytes in all Heaps

Gen 1 Heap Size, Gen 2 Heap SizeLarge Object Heap Size 카운터의 합계를 나타냅니다. 가비지 수집 힙에 할당된 현재 메모리(바이트)를 표시합니다.

# GC Handles

현재 사용하고 있는 가비지 수집 핸들 수를 나타냅니다. 가비지 수집 핸들은 공용 언어 런타임 및 관리되는 환경의 외부 리소스에 대한 핸들입니다.

# Gen 0 Collections

응용 프로그램이 시작된 이후 0 세대 개체(가장 최근에 할당된 개체)가 가비지 수집된 횟수를 나타냅니다.

0 세대 가비지 수집은 0 세대의 사용 가능한 메모리가 할당 요청을 충족시키지 못할 때 발생합니다. 이 카운터는 0 세대 가비지 수집의 끝에서 증가합니다. 높은 생성 가비지 수집에는 낮은 생성 컬렉션이 모두 포함됩니다. 이 카운터는 더 높은 생성(1 세대 또는 2 세대) 가비지 수집이 발생하면 명시적으로 증가합니다.

이 카운터는 마지막으로 관찰된 값을 표시합니다. _Global_ 카운터 값은 정확하지 않으므로 무시해야 합니다.

# Gen 1 Collections

응용 프로그램이 시작된 이후 1 세대 개체가 가비지 수집된 횟수를 나타냅니다.

카운터는 1 세대 가비지 수집의 끝에서 증가합니다. 높은 생성 가비지 수집에는 낮은 생성 컬렉션이 모두 포함됩니다. 이 카운터는 더 높은 생성(2 세대) 가비지 수집이 발생하면 명시적으로 증가합니다.

이 카운터는 마지막으로 관찰된 값을 표시합니다. _Global_ 카운터 값은 정확하지 않으므로 무시해야 합니다.

# Gen 2 Collections

응용 프로그램이 시작된 이후 2 세대 개체가 가비지 수집된 횟수를 나타냅니다. 카운터는 2 세대 가비지 수집(완전 가비지 수집이라고도 함)의 끝에서 증가합니다.

이 카운터는 마지막으로 관찰된 값을 표시합니다. _Global_ 카운터 값은 정확하지 않으므로 무시해야 합니다.

# Induced GC

GC.Collect의 명시적 호출로 인한 가비지 수집의 최대 수행 횟수를 나타냅니다. 이는 가비지 수집기가 컬렉션 빈도를 조정하도록 하는 유용한 방법입니다.

# of Pinned Objects

마지막 가비지 수집에서 발견된 고정된 개체 수를 나타냅니다. 고정된 개체는 가비지 수집기가 메모리에서 이동할 수 없는 개체입니다. 이 카운터는 가비지 수집된 힙에서만 고정된 개체를 추적합니다. 예를 들어, 0 세대 가비지 수집은 0 세대 힙에서만 고정된 개체를 열거합니다.

# of Sink Blocks in use

현재 사용하고 있는 동기화 블록 수를 나타냅니다. 동기화 블록은 동기화 정보 저장에 할당된 개체별 데이터 구조입니다. 동기화 블록은 관리되는 개체에 대한 약한 참조를 가지며 가비지 수집기에 의해 스캔됩니다. 동기화 블록은 동기화 정보를 저장하는 데 제한되지 않으며 COM interop 메타데이터를 저장할 수도 있습니다. 이 카운터는 동기화 원시 함수를 지나치게 사용할 경우 성능 문제를 표시합니다.

# Total committed Bytes

현재 가비지 수집기에 의해 커밋된 가상 메모리의 양(바이트)을 나타냅니다. 커밋된 메모리는 공간이 디스크 페이징 파일에 예약된 실제 메모리입니다.

# Total reserved Bytes

가상 메모리 양을 표시합니다. 가비지 수집기에서 현재 예약된 바이트 수입니다. 예약된 메모리는 응용 프로그램을 위해 예약된 가상 메모리 공간이지만 디스크나 주 메모리 페이지는 사용되지 않습니다.

% Time in GC

마지막 가비지 수집 주기 이후 가비지 수집을 수행하는 데 사용한 경과 시간의 비율을 나타냅니다. 이 카운터는 일반적으로 응용 프로그램을 대신해서 메모리를 수집하고 압축하기 위해 가비지 수집기가 수행한 작업을 표시하며, 모든 가비지 수집의 끝에서만 업데이트됩니다. 이 카운터는 평균 값이 아니라 마지막으로 관찰된 값을 반영합니다.

Allocated Bytes/second

가비지 수집 힙에 할당된 초 당 바이트 수를 나타냅니다. 이 카운터는 각 할당이 아닌 모든 가비지 수집의 끝에서 업데이트됩니다. 이 카운터는 평균 초과 시간이 아니며, 샘플 간격으로 나뉜 마지막 두 개의 샘플에서 관찰된 값의 차이를 표시합니다.

Finalization Survivors

종료를 기다리면서 컬렉션에서 살아 있는, 가비지 수집되는 개체의 수를 나타냅니다. 이러한 개체가 다른 개체에 대한 참조를 가지는 경우 해당 개체도 살아 있게 되지만 이 카운터에서 계산되지는 않습니다. Promoted Finalization-Memory from Gen 0Promoted Finalization-Memory from Gen 1 카운터는 종료 후에도 살아 있는 모든 메모리를 나타냅니다.

이 카운터는 누적되지 않으므로, 모든 가비지 수집의 끝에서 특정 컬렉션 기간 동안 살아 남은 메모리의 합으로 업데이트됩니다. 이 카운터는 종료로 인해 응용 프로그램에서 발생할 수 있는 추가적인 오버헤드를 나타냅니다.

Gen 0 heap size

0 세대에 할당될 수 있는 최대 바이트를 표시하지만, 현재 0 세대에 할당된 바이트 수를 나타내지는 않습니다.

0 세대 가비지 수집은 마지막 컬렉션 이후의 할당이 이 크기를 초과할 때 발생합니다. 0 세대의 크기는 가비지 수집기에 의해 조정되어 응용 프로그램이 실행되는 동안 변경될 수 있습니다. 0 세대 컬렉션의 끝에서 0 세대 힙의 크기는 0바이트입니다. 이 카운터는 다음 0 세대 가비지 수집을 호출하는 할당 크기(바이트)를 나타냅니다.

이 카운터는 각 할당이 아닌 가비지 수집의 끝에서 업데이트됩니다.

Gen 0 Promoted Bytes/Sec

0세대에서 1세대로 승격된 초당 바이트 수를 표시합니다. 가비지 수집에서 메모리가 살아 있으면 해당 수준이 올라갑니다. 이 카운터는 초 당 만들어지는 비교적 수명이 긴 개체의 표시기입니다.

이 카운터는 샘플 간격으로 나뉜 마지막 두 개의 샘플에서 관찰된 값의 차이를 표시합니다.

Gen 1 heap size

1 세대의 현재 바이트 수를 표시합니다. 이 카운터는 1 세대의 최대 크기는 표시하지 않습니다. 개체는 이 세대에서 직접 할당되지 않으며 이전 세대 0 가비지 수집에서 승격됩니다. 이 카운터는 각 할당이 아닌 가비지 수집의 끝에서 업데이트됩니다.

Gen 1 Promoted Bytes/Sec

1세대에서 2세대로 승격된 초당 바이트 수를 표시합니다. 종료되기를 기다리고 있다는 이유로만 승격되는 개체는 이 카운터에 포함되지 않습니다.

가비지 수집에서 메모리가 살아 있으면 해당 수준이 올라갑니다. 2 세대는 가장 오래된 세대이기 때문에 2 세대에서부터 수준이 올라가는 것은 없습니다. 이 카운터는 초 당 만들어지는 매우 수명이 긴 개체의 표시기입니다.

이 카운터는 샘플 간격으로 나뉜 마지막 두 개의 샘플에서 관찰된 값의 차이를 표시합니다.

Gen 2 heap size

2세대의 현재 바이트 수를 표시합니다. 개체는 이 세대에서 직접 할당되지 않으며 이전 세대 1 가비지 수집 동안 1 세대의 가비지 수집에서 승격됩니다. 이 카운터는 각 할당이 아닌 가비지 수집의 끝에서 업데이트됩니다.

Large Object Heap size

대형 개체 힙의 현재 크기(바이트)를 나타냅니다. 20KB보다 큰 개체는 대형 개체로 가비지 수집기에 의해 처리되고 특별 힙에 직접 할당됩니다. 대형 개체는 세대를 통해 수준이 올라가지 않습니다. 이 카운터는 각 할당이 아닌 가비지 수집의 끝에서 업데이트됩니다.

Promoted Finalization-Memory from Gen 0

종료되기를 기다리기만 해서 0 세대에서 1 세대로 수준이 올라간 메모리의 바이트를 나타냅니다. 이 카운터는 누적되지 않으며 마지막 가비지 수집의 끝에서 관찰된 값을 표시합니다.

Promoted Finalization-Memory from Gen 1

종료되기를 기다리기만 해서 1 세대에서 2 세대로 수준이 올라간 메모리의 바이트를 나타냅니다. 이 카운터는 누적되지 않으며 마지막 가비지 수집의 끝에서 관찰된 값을 표시합니다. 마지막 가비지 수집이 0 세대 컬렉션 뿐이라면 이 카운터는 0으로 다시 설정됩니다.

Promoted Memory from Gen 0

가비지 수집에서 살아 있고 0 세대에서 1 세대로 수준이 올라간 메모리의 바이트를 표시합니다. 종료되기를 기다리고 있다는 이유로만 승격되는 개체는 이 카운터에 포함되지 않습니다. 이 카운터는 누적되지 않으며 마지막 가비지 수집의 끝에서 관찰된 값을 표시합니다.

Promoted Memory from Gen 1

가비지 수집에서 살아 있고 1 세대에서 2 세대로 수준이 올라간 메모리의 바이트를 표시합니다. 종료되기를 기다리고 있다는 이유로만 승격되는 개체는 이 카운터에 포함되지 않습니다. 이 카운터는 누적되지 않으며 마지막 가비지 수집의 끝에서 관찰된 값을 표시합니다. 마지막 가비지 수집이 0 세대 컬렉션 뿐이라면 이 카운터는 0으로 다시 설정됩니다.

참고 항목

참조

런타임 프로파일링

개념

자동 메모리 관리

기타 리소스

.NET Framework의 성능 카운터