2012-05-31 17 views
6

Ho letto di recente argomenti relativi frammentazione della memoria: How to solve Memory Fragmentation e What is memory fragmentation?Strumenti per il controllo di frammentazione della memoria

voglio vedere un po 'di mappa di allocazione di memoria come autore in questi articolo http://pavlovdotnet.wordpress.com/2007/11/10/memory-fragmentation/

Potrebbe consigliare alcuni strumenti per ottenere una mappa di allocazione della memoria in questo modo, in modo da poter vedere se la memoria è frammentata e quale è lo spazio libero più grande disponibile.

Sono su Windows quindi preferirei strumenti che funzionano su questo sistema.

risposta

4

Here è uno strumento che visualizza memoria GC e utilizzo heap, anche il codice sorgente viene fornito. Un'altra app simile è collegata anche nei commenti.

Se è necessario essere in grado di analizzare l'utilizzo della memoria per una soluzione .NET, è possibile controllare ANTS Memory Profiler, può essere eseguito insieme a un progetto in Visual Studio e tenere sotto controllo il modo in cui i processi e gli oggetti utilizzano la memoria.

2

C'è una soluzione indiretta al problema. Ho sviluppato un'applicazione server per alcuni anni. Inizialmente stiamo eseguendo l'allocazione su richiesta e, di conseguenza, dopo un periodo di inattività di alcune settimane, le prestazioni del server si sono ridotte. Per risolvere il problema abbiamo seguito questa impostazione -

Supponiamo di avere classi definite dall'utente X, Y, Z, .. che è necessario allocare dal mucchio in fase di esecuzione. Allocare n numero di oggetti X all'avvio. Metti tutti questi oggetti nell'elenco dei pool gratuiti. Su richiesta, prendi ogni oggetto di x e forniscilo alla tua app. Quando è in uso, inseriscilo nell'elenco delle risorse occupato. Quando l'app vuole rilasciarlo, rimettilo nell'elenco dei pool gratuiti. Segui questa linea per Y. Z ecc.

Poiché si stanno allocando tutti gli oggetti necessari all'avvio e non si torna mai al gestore di memoria del sistema operativo fino a quando il programma non si chiude, non si verificherà il degrado delle prestazioni causato dalla frammentazione della memoria.

+0

in tutta soluzione è suono, ecco un'alternativa https://msdn.microsoft.com/en-us/library/windows/desktop/aa366750(v=vs.85).aspx – ComputerSaysNo

Problemi correlati