Partilhar via


membroInfoCacheCriação 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 memberInfoCacheCreation assistente de depuração gerenciado (MDA) é ativado quando um MemberInfo cache é criado. Este é um forte indício de um programa que está fazendo uso de recursos de reflexão caros recursos.

Sintomas

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

Motivo

As operações de reflexão que envolvem MemberInfo objetos são consideradas recursos caros porque devem ler metadados armazenados em páginas frias e, em geral, indicam que o programa está usando algum tipo de cenário de ligação tardia.

Resolução

Você pode determinar onde a reflexão está sendo usada em seu programa habilitando este MDA e, em seguida, executando seu código em um depurador ou anexando com um depurador quando o MDA é ativado. Sob um depurador, você obterá um rastreamento de pilha mostrando onde o cache foi criado e, a partir daí, MemberInfo você pode determinar onde seu programa está usando reflexão.

A resolução depende dos objetivos do código. Este MDA alerta-o de que o seu programa tem um cenário de ligação tardia. Talvez você queira determinar se pode substituir um cenário de vinculação antecipada ou considerar o desempenho do cenário de vinculação tardia.

Efeito no tempo de execução

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

Saída

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

Configuração

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

Exemplo

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

using System;

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

Consulte também