Compartir vía


MDA de gcUnmanagedToManaged

Nota:

Este artículo es específico de .NET Framework. No se aplica a implementaciones más recientes de .NET, incluidas .NET 6 y versiones posteriores.

El asistente para la depuración administrada (MDA) gcUnmanagedToManaged produce una recolección de elementos no utilizados siempre que un subproceso realice la transición de código no administrado a administrado.

Síntomas

Una aplicación que ejecute componentes de usuario no administrados con la invocación de plataforma y COM genera una infracción de acceso no determinista en CLR.

Causa

Si una aplicación está ejecutando componentes de usuario no administrados, dichos componentes podrían haber dañado el montón de recolección de elementos no utilizados. Esto provoca una infracción de acceso en CLR cuando el recolector de elementos no utilizados intenta desplazarse por el gráfico de objetos.

Solución

Al habilitar este asistente, se reduce el tiempo entre el momento en que el componente no administrado daña la pila de recolección de elementos no utilizados y el momento en que se produce la infracción de acceso al forzar que tenga lugar una recolección antes de cada transición administrada.

Efecto en el Runtime

Produce una recolección de elementos no utilizados siempre que un subproceso realice la transición de código no administrado a administrado.

Output

Este MDA no produce ninguna salida.

Configuración

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

Consulte también