다음을 통해 공유


프로파일링 API의 가비지 수집

업데이트: 2007년 11월

프로파일러는 가비지 수집 알림을 받을 수 있습니다.

사용자가 COR_PRF_MONITOR_GC 플래그를 지정하면 ICorProfilerCallback::ObjectAllocated 이벤트를 제외한 모든 가비지 수집 이벤트가 프로파일러에서 발생합니다. ObjectAllocated 이벤트는 성능상의 이유로 COR_PRF_MONITOR_OBJECT_ALLOCATED 플래그에 의해 명시적으로 제어됩니다. COR_PRF_MONITOR_GC 플래그를 사용하면 동시 가비지 수집이 해제됩니다.

.NET Framework 버전 1.0과 1.1에서 일시 중단 원인이 COR_PRF_SUSPEND_FOR_GC일 경우 코드 프로파일러가 ICorProfilerCallback::RuntimeSuspendFinishedICorProfilerCallback::RuntimeResumeStarted 콜백을 모니터링하여 가비지 수집이 발생하는지 확인합니다. 종료하는 동안 CLR도 일시 중단됩니다. 그리고 런타임이 이미 일시 중단된 상태이므로 코드 프로파일러에 알리지 않고 하나 이상의 가비지 수집이 발생할 수 있습니다. 이러한 상황에서는 가비지 수집 완료를 쉽게 감지할 수 없습니다. 코드 프로파일러에서는 ICorProfilerCallback::ObjectReferences 또는 ICorProfilerCallback::RootReferences 콜백 후에 발생한 첫 번째 ObjectAllocated 콜백을 감지해야 합니다.

.NET Framework 버전 2.0 이상에서 코드 프로파일러는 ICorProfilerCallback2::GarbageCollectionStartedICorProfilerCallback2::GarbageCollectionFinished 콜백을 사용하여 가비지 수집이 발생하는지 확인하고 해당되는 세대를 식별할 수 있습니다. 가비지 수집 세대에 대한 자세한 내용은 COR_PRF_GC_GENERATION 열거형을 참조하십시오. 이러한 콜백에는 이전 단원에서 설명한 종료 문제가 없습니다.

참고

이전에 IA-64라고 부르던 Intel Itanium 아키텍처를 구현하는 64비트 시스템에서 WOW64 x86 에뮬레이터를 실행하는 응용 프로그램에서는 동시 가비지 수집이 지원되지 않습니다. 64비트 Windows 시스템에서 WOW64를 사용하는 방법에 대한 자세한 내용은 Running 32-bit Applications를 참조하십시오.

참고 항목

개념

프로파일링 API의 가비지 수집 블로킹

기타 리소스

프로파일링 API의 핵심 개념

프로파일링 개요