Compartilhar via


MDA memberInfoCacheCreation

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 de Depuração Gerenciado) de memberInfoCacheCreation é ativado quando um cache de MemberInfo é criado. Isso é uma indicação forte de um programa que está fazendo uso de recursos de reflexão com consumo elevado de recursos computacionais.

Sintomas

O conjunto de trabalho de um programa aumenta porque o programa está usando reflexão com consumo elevado de recursos.

Causa

Operações de reflexão que envolvem objetos MemberInfo são consideradas grandes consumidoras de recursos porque elas devem ler os metadados que são armazenados em páginas frias e, em geral, eles indicam que o programa está usando algum tipo de cenário de associação tardia.

Resolução

Você pode determinar o local em que a reflexão está sendo usada em seu programa habilitando esse MDA e, em seguida, executando o código em um depurador ou anexando com um depurador quando o MDA é ativado. Em um depurador, você obterá um rastreamento de pilha mostrando o local em que o cache MemberInfo foi criado e, desse ponto em diante, você poderá determinar o local em que o programa está usando reflexão.

A resolução depende dos objetivos do código. Esse MDA alerta você de que o programa tem um cenário de associação tardia. Você talvez queira determinar se você pode substituir um cenário de associação precoce ou considerar o desempenho do cenário de associação tardia.

Efeito sobre o runtime

Esse MDA é ativado para cada cache MemberInfo criado. O impacto de desempenho é negligenciável.

Saída

O MDA gera uma mensagem indicando que o cache MemberInfo foi criado. Use um depurador para obter um rastreamento de pilha mostrando o local em que o programa está usando reflexão.

Configuração

<mdaConfig>
  <assistants>
    <memberInfoCacheCreation/>
  </assistants>
</mdaConfig>

Exemplo

Esse código de exemplo ativará o MDA memberInfoCacheCreation.

using System;

public class Exe
{
    public static void Main()
    {
        typeof(object).GetMethods();
    }
}

Confira também