Ho un'app WPF che, tra le altre cose, mostra molte immagini, grandi e piccole. Il mio problema è che l'app utilizza molta memoria e non riesco a capire da dove provenga.dov'è finita la mia memoria? grandi numeri di byte privati
Lo scenario, quando sottolineando l'applicazione certa ottengo questo grafico in Perfmon:
http://www.imagechicken.com/uploads/1244548604007097000.jpg
La grande linea nera è Processo \ Byte privati e le altre linee sono i contatori CLR MEM (quello rosa è totale byte vincolati)
in numeri nel grafico sono:
byte privati ~ 350 Mb
byte vincolati ~ 100 Mb
Ho scavato in giro un sacco con WinDbg e altri strumenti, e tutti riportano che lo stack gestito si comporta (stack! Rapporti eeheap totale gestito di circa 100 Mb)
ho rovistando con applicazioni come LeakDiag, LDGrapher ma non ha trovato nulla.
Quindi, finalmente alla mia domanda, come posso procedere per scoprire dove sta andando la mia memoria?
Anche solo l'avvio dell'applicazione utilizza 100 MB in byte impegnati ma 190 MB in byte privati.
Riferimenti:
Ho letto molto su questo, tra gli altri, sui grandi siti:
Tess Ferrandez: http://blogs.msdn.com/tess/archive/2009/02/27/net-memory-leak-reader-email-are-you-really-leaking-net-memory.aspx
Rico Mariani: http://blogs.msdn.com/ricom/archive/2004/12/10/279612.aspx
MSDN mag: http://msdn.microsoft.com/en-us/magazine/cc163528.aspx
Grazie per le risposte finora. Quindi, per chiarire,! Eeheap,! Dumpheap, gcroot ecc. Tutti riportano le cose che compongono il 100Mb - quello che sto cercando di eliminare è l'altra memoria - i 250 Mb aggiuntivi. Aggiornamento – andyhammar
- con VADUMP: Rapporti "Grande set di lavoro totale" di 236 Mb, "Altri dati" come 196 Mb. Nel frattempo! Eeheap riporta "GC heap size" a 107336836. Qual è questa differenza? – andyhammar
'Altri dati' include l'heap GC insieme ad altri dati :) Non sono sicuro di cos'altro c'è, ma è sicuro assumere che siano i dati di runtime richiesti dal CLR. –