Утечка памяти в профилировании WPF с помощью средства диагностики VS 2017 - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть приложение WPF с утечкой памяти.Теперь я знаю о привязках утечек памяти, DependencyObjects, InotifyPropertyChanged и т. Д. Однако где-то в приложении я забыл сделать что-то правильно, сохранив все свои окна в памяти.Также, когда эти окна закрылись.

У меня есть Visual Studio 2017 Enterprise, так что я могу создать снимок памяти и посмотреть в нее.Однако:

Как только я копаю в Снимке управляемой памяти => найду класс окна, который должен быть пропущен => увидим, что счетчик ссылок ровно столько раз, сколько я открыл и закрыл это окно => взглядв путях к корню - я потерян.

Есть много путей ... как в много.TextBoxes, Borders, ContentPresenters и т. Д. Однако, насколько я могу судить, все заканчивается [Обнаружен цикл].Я (пока) не нашел ни одного пути, который ведет к основному приложению, привязке, обработчику событий или чему-либо еще.Насколько я понимаю, когда путь заканчивается [Обнаружен цикл], и нигде в этой цепочке нет объекта, который также имеет путь к чему-то, что на самом деле должно оставаться в памяти, этот путь не является причиной утечки памяти.

ТАК, это древовидное представление полезно, но не тогда, когда вам нужно щелкнуть 10000 открытых путей, и я чувствую, что должен быть более легкий путь.У кого-нибудь есть указатель на то, как использовать эти невероятные полезные инструменты таким образом, чтобы я мог на самом деле увидеть, что держит окно WPF в памяти ??

Спасибо

РЕДАКТИРОВАТЬ - Может, я просто неправильно читаю инструменты?enter image description here Диаграмма «Память процесса» неуклонно растет. Итак, я ожидаю, что размер кучи также увеличится, но это не так.

РЕДАКТИРОВАТЬ 2 Это память через некоторое время.ThreadInfo кажется немного чрезмерным .... enter image description here

...