Programmazione.it v6.4
Ciao, per farti riconoscere devi fare il login. Non ti sei ancora iscritto? Che aspetti, registrati adesso!
Info Pubblicità Collabora Autori Sottoscrizioni Preferiti Bozze Scheda personale Privacy Archivio Libri Corsi per principianti Forum
.NET Memory Profiler, ottimizzare la memoria in applicazioni managed
Scritto da Fabrizio Pani il 30-04-2007 ore 10:25
Intel Cluster Studio XE
Può sembrare strano, ma anche in codice gestito, qual è quello eseguito dal framework .NET, possiamo avere dei memory leak, e a tal proposito c'è anche un articolo Microsoft a riguardo, che elenca quattro motivi che possono causare questo problema. Per fronteggiare il fenomeno, che in ogni caso è d’entità inferiore rispetto a quando questo accade con un eseguibile nativo, può venire in aiuto .NET Memory Profiler di SciTech Software, giunto alla versione 3.0.

Le novità dell'ultima uscita sono molto interessanti: è possibile collegarsi ad un processo .NET in esecuzione, tracciare risorse unmanaged tra cui la memoria, usare handle come HBITMAP e HWND, ed inoltre importare file dump DMP. Queste ultime feature sono disponibili solo nella versione professionale. Attaccarsi ad un processo .NET in esecuzione richiede che nel sistema siano installati gli strumenti di debugging Microsoft a 32 e a 64 bit, secondo l'applicazione.

In tempo reale si possono ottenere informazioni, graficamente e numericamente, su classi e risorse native, così da poter vedere lo stato dell'heap del gargabe collector e ottenere un'istantanea di esso, che più tardi può essere confrontata con un'altra snapshot. Addirittura si può scegliere di visualizzare singoli valori di campi, di specifiche istanze nell'heap. Tutto questo per quanto riguarda un eseguibile .NET, un servizio .NET o un processo ASP.NET se nel sistema vi è almeno il framework .NET 2.0.

C'è poi un dispose tracker per ottenere informazioni sulle istanze di tipi, che implementano l'interfaccia IDisposable, che è utilizzata per rilasciare correttamente la memoria occupata da un oggetto; abilitare questa caratteristica introduce un leggero overhead, così come tracciare l'utilizzo dell'heap stesso.

.NET Memory Profiler può essere integrato in Visual Studio 2003 e 2005, consentendo così il profiling di un’applicazione da dentro l'ambiente di programmazione stesso. In aggiunta ci sono anche delle API per controllare il profiler dal processo sottoposto a profiling.
Precedente: Sviluppo per Office 2007 in Orcas
Successiva: Microsoft prepara una versione di Windows per i meno abbienti
Intervento di Francesco Diaz a.k.a. francescodiaz del 10-05-2007 ore 16:16, Ittiri (SS)
Plebeo
Plebeo
(1 intervento)
Iscritto il 10-09-2002
buon pomeriggio,

chi ha scritto l'articolo dovrebbe sapere che un memory leak non è possibile in .NET se non usando codice non gestito dal CLR. Quello di cui parla l'articolo microsoft segnalato tra l'altro lo specifica in maniera chiara. Una OutOfMemoryException, come quella descritta dall'esempio, è un'altra cosa rispetto ad un memoryleak.
Spero che accetterete in maniera costruttiva questa segnalazione, e non commentando in maniera pittoresca la cosa come altre volte mi è capitato di leggere

Saluti
Copyright Programmazione.it™ 1999-2013. Alcuni diritti riservati. Testata giornalistica iscritta col n. 569 presso il Tribunale di Milano in data 14/10/2002. Pagina generata in 0.288 secondi.