Partilhar via


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>

Consulte também