gcUnmanagedToManaged MDA

메모

이 문서는 .NET Framework와 관련이 있습니다. .NET 6 이상 버전을 포함하여 .NET의 최신 구현에는 적용되지 않습니다.

gcUnmanagedToManaged MDA(관리 디버깅 도우미)는 스레드가 관리되지 않는 코드에서 관리 코드로 전환할 때마다 가비지 수집을 발생합니다.

Symptoms

COM 및 플랫폼 호출을 사용하여 관리되지 않는 사용자 구성 요소를 실행하는 애플리케이션으로 인해 CLR에서 비결정적 액세스 위반이 발생합니다.

원인

애플리케이션이 관리되지 않는 사용자 구성 요소를 실행하는 경우 해당 구성 요소가 가비지 수집 힙을 손상했을 수 있습니다. 이로 인해 가비지 수집기가 개체 그래프를 탐색하려고 할 때 CLR에서 액세스 위반이 발생합니다.

해결 방법

이 도우미를 사용하도록 설정하면 관리되지 않는 구성 요소가 가비지 수집 힙을 손상하는 시점과 관리되는 모든 전환 전에 가비지 수집을 강제로 수행하여 액세스 위반이 발생하는 시점 사이의 시간을 줄일 수 있습니다.

런타임에 미치는 영향

스레드가 관리되지 않는 코드에서 관리 코드로 전환할 때마다 가비지 수집을 발생합니다.

출력

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

구성 / 설정

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

참고하십시오