MDA memberInfoCacheCreation
Nota
Questo articolo è specifico per .NET Framework. Non si applica alle implementazioni più recenti di .NET, incluse .NET 6 e versioni successive.
L'assistente al debug gestito memberInfoCacheCreation
viene attivato al momento della creazione di una cache MemberInfo. Si tratta di un'indicazione chiara di un programma che usa funzionalità di reflection onerose a livello di risorse.
Sintomi
Il working set di un programma aumenta perché il programma usa la reflection con uso intensivo delle risorse.
Causa
Le operazioni di reflection che richiamano oggetti MemberInfo sono considerate onerose a livello di risorse perché devono leggere i metadati archiviati in pagine ad accesso sporadico e in genere indicano che il programma usa un qualche tipo di scenario di associazione tardiva.
Risoluzione
Per determinare se il programma usa la reflection, è possibile abilitare questo assistente al debug gestito e quindi eseguire il codice in un debugger o collegare un debugger quando viene attivato l'assistente al debug gestito. In un debugger si otterrà un'analisi dello stack che mostra la posizione in cui è stata creata la cache MemberInfo e da tale informazione è possibile determinare dove il programma usa la reflection.
La risoluzione dipende dagli obiettivi del codice. Questo assistente al debug gestito segnala che il programma ha uno scenario di associazione tardiva. È possibile valutare la sostituzione con uno scenario di associazione anticipata oppure esaminare le prestazioni dello scenario di associazione tardiva.
Effetto sull'ambiente di esecuzione
Questo assistente al debug gestito viene attivato ogni volta che viene creata una cache MemberInfo. L'impatto sulle prestazioni è trascurabile.
Output
L'assistente al debug gestito genera un messaggio che indica che la cache MemberInfo è stata creata. Usare un debugger per ottenere un'analisi dello stack che mostra le posizioni in cui il programma usa la reflection.
Impostazione
<mdaConfig>
<assistants>
<memberInfoCacheCreation/>
</assistants>
</mdaConfig>
Esempio
Questo codice di esempio attiverà l'assistente al debug gestito memberInfoCacheCreation
.
using System;
public class Exe
{
public static void Main()
{
typeof(object).GetMethods();
}
}