Domanda

Sto cercando di trovare un modo per determinare in fase di esecuzione la quantità di memoria utilizzata da una determinata classe in .NET.Utilizzando Marshal.SizeOf() è fuori uso, poiché funziona solo su tipi di valore.C'è un modo per verificare esattamente quanta memoria utilizza una classe?

È stato utile?

Soluzione

Ho iniziato solo di recente a esaminare questo tipo di cose, ma ho scoperto che i profiler di memoria possono fornire informazioni abbastanza dettagliate riguardo alle istanze di oggetti all'interno della tua applicazione.

Eccone un paio che vale la pena provare:

Altri suggerimenti

Sono d'accordo che un memory profiler è il modo più semplice per ottenere le informazioni che stai cercando.Oltre ai due menzionati in precedenza, consiglio JetBrains dotTrace, che è sia un profiler delle prestazioni che un profiler della memoria.

Se vuoi farlo da solo e sei disposto ad approfondire le viscere del CLR, puoi usare il API di profilazione .NET, che è un'API non gestita che (come afferma Microsoft):"Consente a un profiler di monitorare l'esecuzione di un programma da parte del common Language Runtime (CLR)." Non è esattamente destinato a un uso casuale, ma ha un'enorme quantità di funzionalità.

basta collegarsi alla domanda SO correlata:

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top