MDA gcUnmanagedToManaged
Observação
Este artigo é específico para aplicativos .NET Framework. Ele não se aplica a implementações mais recentes do .NET, incluindo o .NET 6 e versões posteriores.
O MDA (assistente para depuração gerenciada) gcUnmanagedToManaged
causa uma coleta de lixo sempre que um thread faz a transição de código não gerenciado para código gerenciado.
Sintomas
Um aplicativo que executa componentes de usuário não gerenciados usando o COM e a invocação de plataforma está causando uma violação de acesso não determinístico no CLR.
Causa
Se um aplicativo estiver executando componentes de usuário não gerenciados, esses componentes poderão ter corrompido o heap coletado como lixo. Isso causa uma violação de acesso no CLR quando o coletor de lixo tenta percorrer o gráfico do objeto.
Resolução
A habilitação desse assistente reduz o tempo entre o período em que o componente não gerenciado corrompe o heap coletado como lixo e o período em que ocorre a violação de acesso, forçando uma coleta de lixo antes de cada transição gerenciada.
Efeito sobre o runtime
Causa uma coleta de lixo sempre que um thread faz a transição de código não gerenciado para código gerenciado.
Saída
Esse MDA não produz nenhuma saída.
Configuração
<mdaConfig>
<assistants>
<gcUnmanagedToManaged/>
</assistants>
</mdaConfig>