Delen via


memberInfoCacheCreation MDA

Notitie

Dit artikel is specifiek voor .NET Framework. Dit geldt niet voor nieuwere implementaties van .NET, waaronder .NET 6 en nieuwere versies.

De memberInfoCacheCreation beheerde foutopsporingsassistent (MDA) wordt geactiveerd wanneer er een MemberInfo cache wordt gemaakt. Dit is een sterke indicatie van een programma dat gebruikmaakt van resource-dure reflectiefuncties.

Symptomen

De werkset van een programma neemt toe omdat het programma gebruikmaakt van resource-dure reflectie.

Oorzaak

Weerspiegelingsbewerkingen waarbij objecten betrokken MemberInfo zijn, worden beschouwd als kostbaar omdat ze metagegevens moeten lezen die zijn opgeslagen in koude pagina's en in het algemeen geven ze aan dat het programma een bepaald type laat gebonden scenario gebruikt.

Oplossing

U kunt bepalen waar weerspiegeling wordt gebruikt in uw programma door deze MDA in te schakelen en vervolgens uw code uit te voeren in een foutopsporingsprogramma of te koppelen aan een foutopsporingsprogramma wanneer de MDA wordt geactiveerd. Onder een foutopsporingsprogramma krijgt u een stack-tracering die laat zien waar de MemberInfo cache is gemaakt en van daaruit kunt u bepalen waar uw programma weerspiegeling gebruikt.

De resolutie is afhankelijk van de doelstellingen van de code. Deze MDA waarschuwt u dat uw programma een laat gebonden scenario heeft. Mogelijk wilt u bepalen of u een vroeg gebonden scenario kunt vervangen of de prestaties van het late gebonden scenario kunt overwegen.

Effect op de runtime

Deze MDA wordt geactiveerd voor elke MemberInfo cache die wordt gemaakt. De invloed op de prestaties is te verwaarlozen.

Uitvoer

De MDA voert een bericht uit dat de MemberInfo cache is gemaakt. Gebruik een foutopsporingsprogramma om een stack-tracering op te halen die laat zien waar uw programma weerspiegeling gebruikt.

Configuratie

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

Opmerking

Met deze voorbeeldcode wordt de memberInfoCacheCreation MDA geactiveerd.

using System;

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

Zie ook