Compartilhar via


memberInfoCacheCreation MDA

O memberInfoCacheCreation Assistente de depuração gerenciada (MDA) é ativado quando uma MemberInfo cache é criado. Esta é uma forte indicação de um programa que está fazendo uso de recursos de reflexão cara de recurso.

Sintomas

Um programa de trabalho conjunto aumenta, porque o programa está usando a reflexão cara de recurso.

Causa

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

Resolução

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

A resolução depende dos objetivos do código. Este MDA alerta que o programa tiver um cenário de ligação tardia. Convém para determinar se você pode substituir um cenário de early bound ou considerar o desempenho do cenário de limite atrasado.

Efeito sobre o tempo de execução.

Este MDA é ativado para cada MemberInfo cache é criado. O impacto de desempenho é insignificante.

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 usando a reflexão.

Configuração

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

Exemplo

O código de exemplo ativará a memberInfoCacheCreation MDA.

using System;

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

Consulte também

Referência

MemberInfo

Conceitos

Diagnosticar erros com assistentes de depuração gerenciada