gcUnmanagedToManaged MDA

Note

Este artigo é específico para .NET Framework. Ele não se aplica a implementações mais recentes do .NET, incluindo o .NET 6 e versões posteriores.

O gcUnmanagedToManaged MDA (assistente de depuração gerenciada) causa uma coleta de lixo sempre que um thread faz a transição de código não gerenciado para gerenciado.

Symptoms

Um aplicativo que executa componentes de usuário não gerenciados usando COM e invocação de plataforma está causando uma violação de acesso não determinística no CLR.

Cause

Se um aplicativo estiver executando componentes de usuário não gerenciados, esses componentes poderão ter corrompido o heap coletado por lixo. Isso causa uma violação de acesso no CLR quando o coletor de lixo tenta percorrer o grafo do objeto.

Resolução

Habilitar esse assistente reduz o tempo entre quando o componente não gerenciado corrompe o heap coletado por 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 Runtime

Causa uma coleta de lixo sempre que um thread faz a transição de código não gerenciado para gerenciado.

Saída

Esse MDA não produz nenhuma saída.

Configuração

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

Consulte também