Ich untersuche ein mögliches Speicherleck in unserer C#/WPF/.NET 4.51-Anwendung.Untersuchen von Speicherleck - Commited Speicher wächst - Heap ist in Ordnung
Ich machte Schnappschüsse von der Anwendung direkt nach dem Start und nach ein paar Stunden, wenn der zugewiesene Speicher über die Spitze wuchs.
Ich überprüft die verwalteten Heap-Instanzen mit VisualStudio-Prozess-Dump-Tool. Alles sah perfekt aus.
die Deponien in WinDbg öffnen scheint dies zu bestätigen, da Heap und Stack in einer Art und Weise wächst ich es (+ 50MB) erwartet (links: Erste dump, rechts: Last-Dump):
Was reizt ich ist, dass die Größe der commited Seiten viel wuchs (links: Ersten dump, rechts: Last-Dump):
auch zeigt VMMap diesen riesigen commited Block als ‚private Daten‘ (nicht auf die Deponien im Zusammenhang Der Screenshot wurde etwa eine Stunde später aufgenommen):
Bitte korrigieren Sie mich:
Da der Heap in Ordnung ist und die privaten Bytes direkt mit VirtualAlloc() zugewiesen werden, kann ich 'unseren' verwalteten Anwendungscode von der Liste möglicher Leckkandidaten ausschließen.
Gibt es eine Möglichkeit, die Ursache des Lecks einzugrenzen?
Verwenden Sie nicht verwaltete Bibliotheken? [debugdiag 2] (https://www.microsoft.com/en-us/download/details.aspx?id=49924) ist ein guter Ort zum Starten –
Wenn Sie Dinge wie Excel-Interpolation verwenden, wenn Sie nicht alle Massen frei von Excel-Teilen kann es sehr lange dauern, bis der Müllsammler sich um freie Dinge kümmert. – BugFinder
Ja, wir verwenden einige externe Komponenten. Ich versuche, das Leck etwas einzuengen, bevor ich jede Komponente deaktiviere. Danke. Probiere DebugDiag jetzt aus ... – thomai