다음을 통해 공유


gcUnmanagedToManaged MDA

gcUnmanagedToManaged MDA(관리 디버깅 도우미)를 사용하면 비관리 코드에서 관리 코드로 스레드가 전환될 때마다 가비지 수집이 발생합니다.

증상

COM 및 플랫폼 호출을 사용하여 비관리 사용자 구성 요소를 실행하는 응용 프로그램의 경우 CLR에서 모호한 액세스 위반이 발생합니다.

원인

응용 프로그램에서 비관리 사용자 구성 요소를 실행하는 경우에는 해당 구성 요소가 가비지 수집된 힙을 손상했을 수도 있습니다. 따라서 가비지 수집기가 개체 그래프를 작성하려 할 때 CLR에서 액세스 위반이 발생합니다.

해결 방법

이 도구를 사용하면 비관리 구성 요소가 가비지 수집된 힙을 손상시킬 때부터 모든 관리 전환 전에 가비지 수집이 발생하도록 강제함에 따라 액세스 위반이 발생할 때까지의 시간이 단축됩니다.

런타임 효과

비관리 코드에서 관리 코드로 스레드가 전환될 때마다 가비지 수집이 발생합니다.

Output

이 MDA가 출력을 생성하지 않습니다.

구성

<mdaConfig>
  <assistants>
    <gcUnmanagedToManaged/>
  </assistants>
</mdaConfig>

참고 항목

참조

gcManagedToUnmanaged MDA

MarshalAsAttribute

개념

관리 디버깅 도우미를 사용하여 오류 진단

Interop 마샬링

기타 리소스

상호 운용성