gcUnmanagedToManaged MDA
Nota
Este artigo é específico do .NET Framework. Ele não se aplica a implementações mais recentes do .NET, incluindo o .NET 6 e versões posteriores.
O gcUnmanagedToManaged
assistente de depuração gerenciado (MDA) causa uma coleta de lixo sempre que um thread transita de código não gerenciado para gerenciado.
Sintomas
Um aplicativo que executa componentes de usuário não gerenciados usando COM e invocar plataforma está causando uma violação de acesso não determinístico no CLR.
Motivo
Se um aplicativo estiver executando componentes de usuário não gerenciados, esses componentes podem ter corrompido a pilha coletada de lixo. Isso causa uma violação de acesso no CLR quando o coletor de lixo tenta percorrer o gráfico de objeto.
Resolução
Habilitar esse assistente reduz o tempo entre quando o componente não gerenciado corrompe a pilha coletada de lixo e quando a violação de acesso acontece, forçando uma coleta de lixo a ocorrer antes de cada transição gerenciada.
Efeito no tempo de execução
Causa uma coleta de lixo sempre que um thread faz a transição de código não gerenciado para gerenciado.
Saída
Este MDA não produz nenhuma saída.
Configuração
<mdaConfig>
<assistants>
<gcUnmanagedToManaged/>
</assistants>
</mdaConfig>