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();
}
}