Ich habe eine WPF-App, die unter anderem viele Bilder in verschiedenen Größen anzeigt. Mein Problem ist, dass die App viel Speicher verbraucht und ich nicht herausfinden kann, woher das kommt.
Das Szenario, wenn die App etwas belastet wird, führt zu diesem Diagramm in Perfmon:
http://www.imagechicken.com/uploads/1244548604007097000.jpg
Die dicke schwarze Linie zeigt Process\Private Bytes und die anderen Linien sind die CLR-Speicherzähler (die pinke zeigt die insgesamt reservierten Bytes)
In Zahlen im Diagramm sind:
Private Bytes ~ 350 Mb
Committed Bytes ~ 100 Mb
Ich habe viel mit WinDbg und anderen Tools herumgegraben, und sie alle zeigen, dass der verwaltete Stapel sich normal verhält (insgesamt verwalteter Stapel von ca. 100 Mb gemäß !eeheap-Berichten)
Ich habe mit Apps wie LeakDiag und LDGrapher herumexperimentiert, aber nichts gefunden.
Also, schlussendlich meine Frage, wie gehe ich am besten vor, um herauszufinden, wohin mein Speicher verschwindet?
Schon beim Start der App werden 100 MB in reservierten Bytes und 190 MB in privaten Bytes verwendet.
Verweise:
Ich habe viel darüber gelesen, unter anderem auf den großartigen Seiten von:
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