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 메서드를 호출할 수 있습니다. 즉 ICorProfilerCallback2::GarbageCollectionStarted와 ICorProfilerCallback2::GarbageCollectionFinished 사이에서 발생하는 콜백을 제외한 모든 콜백에서 이 메서드를 호출할 수 있습니다.
대부분의 세대 전환은 가비지 수집 동안 발생하므로 수집 사이에서는 세대가 증가할 수 있지만 일반적으로 세대가 전환되지는 않습니다. 따라서 GetGenerationBounds는 ICorProfilerCallback2::GarbageCollectionStarted 및 ICorProfilerCallback2::GarbageCollectionFinished에서 호출하는 것이 가장 좋습니다.
프로그램 시작 시 일부 개체는 CLR(공용 언어 런타임) 자체에 의해 일반적으로 3세대와 0세대에 할당됩니다. 따라서 관리 코드의 실행이 시작될 때 이러한 세대에는 이미 개체가 들어 있습니다. 가비지 수집기에서 생성된 더미 개체를 제외하면 1세대와 2세대는 일반적으로 비어 있습니다. 32비트로 구현된 CLR에서 더미 개체의 크기는 12바이트로, 64비트로 구현된 CLR에서보다 큽니다. 네이티브 이미지 생성기(NGen.exe)에서 생성된 모듈 내에 2세대 범위가 있을 수도 있습니다. 이 경우 2세대의 개체는 가비지 수집기에 의해 할당되는 것이 아니라 NGen.exe가 실행될 때 할당되는 고정 개체입니다.
이 함수는 호출자 할당 버퍼를 사용합니다. 자세한 내용은 프로파일링 API 메서드 규칙을 참조하십시오.
요구 사항
플랫폼: .NET Framework 시스템 요구 사항 참조
헤더: CorProf.idl, CorProf.h
라이브러리: CorGuids.lib
.NET Framework 버전: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0