ICorProfilerInfo2::GetGenerationBounds 메서드

다양한 가비지 컬렉션 세대를 구성하는 힙 세그먼트인 메모리 영역을 가져옵니다.

구문

HRESULT GetGenerationBounds(  
    [in]  ULONG cObjectRanges,  
    [out] ULONG *pcObjectRanges,  
    [out, size_is(cObjectRanges), length_is(*pcObjectRanges)] COR_PRF_GC_GENERATION_RANGE ranges[]);  

매개 변수

cObjectRanges
[in] ranges 배열에 대해 호출자가 할당한 요소 수입니다.

pcObjectRanges
[out] 일부 또는 전체가 ranges 배열로 반환되는 총 범위 수를 지정하는 정수에 대한 포인터입니다.

ranges
[out] 각각 가비지 컬렉션 중인 세대 내의 메모리 범위(즉, 블록)를 설명하는 COR_PRF_GC_GENERATION_RANGE 구조 배열입니다.

설명

가비지 컬렉션이 진행되고 있지 않으면 모든 프로파일러 콜백에서 GetGenerationBounds 메서드를 호출할 수 있습니다.

대부분의 세대 이동은 가비지 수집 중에 발생합니다. 컬렉션 간에 세대가 증가할 수 있지만 일반적으로 이동하지는 않습니다. 따라서 가장 흥미로운 GetGenerationBounds 호출 위치는 ICorProfilerCallback2::GarbageCollectionStartedICorProfilerCallback2::GarbageCollectionFinished입니다.

프로그램 시작 중에 일부 개체는 CLR(공용 언어 런타임)에 의해 일반적으로 3세대 및 0세대에서 할당됩니다. 따라서 관리 코드 실행이 시작되는 시간에는 이러한 세대에 이미 개체가 포함되어 있습니다. 1세대와 2세대는 가비지 수집기에서 생성되는 더미 개체를 제외하고 일반적으로 비어 있습니다. (더미 개체의 크기는 CLR의 32비트 구현에서 12바이트이고, 크기는 64비트 구현에서 더 큽니다.) 네이티브 이미지 생성기(NGen.exe)에서 생성된 모듈 내에 있는 2세대 범위도 표시될 수 있습니다. 이 경우 2세대의 개체는 고정 개체로, 가비지 수집기에 의해 할당되는 대신 NGen.exe가 실행될 때 할당됩니다.

이 함수는 호출자 할당 버퍼를 사용합니다.

요구 사항

플랫폼:시스템 요구 사항을 참조하세요.

헤더: CorProf.idl, CorProf.h

라이브러리: CorGuids.lib

.NET Framework 버전: 2.0부터 사용 가능

참고 항목