ICorProfilerCallback4::SurvivingReferences2 메서드
비압축 가비지 수집의 결과로 힙에 있는 개체의 레이아웃을 보고합니다. 이 메서드는 프로파일러가 ICorProfilerCallback4 인터페이스를 구현한 경우에 호출됩니다. 이 콜백은 길이가 ULONG으로 표현될 수 있는 길이를 초과하는 큰 개체 범위를 보고할 수 있어 ICorProfilerCallback2::SurvivingReferences 메서드를 대체합니다.
구문
HRESULT SurvivingReferences2(
[in] ULONG cSurvivingObjectIDRanges,
[in, size_is(cSurvivingObjectIDRanges)] ObjectID
objectIDRangeStart[] ,
[in, size_is(cSurvivingObjectIDRanges)] SIZE_T
cObjectIDRangeLength[] );
매개 변수
cSurvivingObjectIDRanges
[in] 비압축 가비지 수집 후에 유지된 연속 개체 블록 수입니다. 즉, cSurvivingObjectIDRanges
값은 각 개체 블록의 ObjectID
및 길이를 각각 저장하는 objectIDRangeStart
및 cObjectIDRangeLength
배열의 크기입니다.
SurvivingReferences2
의 다음 두 인수는 병렬 배열입니다. 즉, objectIDRangeStart
및 cObjectIDRangeLength
는 동일한 연속 개체 블록과 관련이 있습니다.
objectIDRangeStart
[in] 메모리에서 연속 라이브 개체 블록의 시작 주소를 각각 나타내는 ObjectID
값의 배열입니다.
cObjectIDRangeLength
[in] 메모리에 유지되는 연속 개체 블록의 크기를 각각 나타내는 정수 배열입니다.
크기는 objectIDRangeStart
배열에서 참조된 각 블록에 대해 지정됩니다.
설명
개체가 가비지 수집 후에 유지되었는지 여부를 확인하려면 objectIDRangeStart
및 cObjectIDRangeLength
배열의 요소를 다음과 같이 해석해야 합니다. ObjectID
값(ObjectID
)이 다음 범위 내에 있다고 가정합니다.
ObjectIDRangeStart[i]
<= ObjectID
<ObjectIDRangeStart[i]
+ cObjectIDRangeLength[i]
i
값이 다음 범위에 있는 경우 개체가 가비지 수집 후에 유지되었습니다.
0 <= i
<cSurvivingObjectIDRanges
비압축 가비지 컬렉션은 "데드" 개체가 사용한 메모리를 회수하지만 확보된 공간을 압축하지는 않습니다. 따라서 메모리가 힙에 반환되지만 "라이브" 개체는 이동되지 않습니다.
CLR(공용 언어 런타임)은 비압축 가비지 수집을 위해 SurvivingReferences2
를 호출합니다. 압축 가비지 수집의 경우 대신 MovedReferences2가 호출됩니다. 한 세대는 단일 가비지 수집을 압축하고 다른 세대는 압축하지 않을 수 있습니다. 특정 세대의 가비지 수집에 대해 프로파일러는 SurvivingReferences2
콜백이나 MovedReferences2 콜백 중 하나를 받게 되며 둘 다 받을 수는 없습니다.
제한된 내부 버퍼링, 서버 가비지 컬렉션 중 여러 콜백 발생 및 기타 이유로 인해 특정 가비지 컬렉션 중 SurvivingReferences2
콜백을 여러 개 받을 수도 있습니다. 가비지 수집 중 여러 콜백이 발생하는 경우 정보가 누적됩니다. SurvivingReferences2
콜백에 보고된 모든 참조가 가비지 수집 후에 유지됩니다.
프로파일러가 ICorProfilerCallback 및 ICorProfilerCallback4 인터페이스를 둘 다 구현하는 경우 SurvivingReferences2
메서드가 ICorProfilerCallback2::SurvivingReferences 메서드 앞에 호출되지만 SurvivingReferences2
가 성공적으로 반환되는 경우에만 호출됩니다. 프로파일러는 두 번째 메서드 호출을 방지하기 위해 SurvivingReferences2
메서드에서 실패를 나타내는 HRESULT를 반환할 수 있습니다.
요구 사항
플랫폼:시스템 요구 사항을 참조하세요.
헤더: CorProf.idl, CorProf.h
라이브러리: CorGuids.lib
.NET Framework 버전: 4.5부터 사용 가능
참고 항목
.NET