Использование Visual Studio Diagnostic Tool для исследования потребления / утечки памяти - PullRequest
0 голосов
/ 21 января 2019

В приложении WPF, над которым я работаю, я получил следующий профиль использования памяти из средств диагностики Visual Studio (см. Изображение ниже).

Так что моя программа продолжает выделять все больше и больше памяти, пока я не получуOutOfMemoryException.

Я новичок в VS Diagnostic Tools, поэтому вопрос: как мне использовать это окно или информацию, которую он предоставляет, чтобы выяснить, кто виноват в этом потреблении памяти?

enter image description here

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Это также во многом зависит от того, что вы делаете, то есть у вас есть один гигантский файл?или у вас есть тысячи или, может быть, миллионы небольших объектов и файлов или изображений?

В последнее время я столкнулся с ситуацией с большим использованием памяти, когда использовались дескрипторы из system.graphics, и количество моих дескрипторов (диспетчер задач-> производительность, системные дескрипторы) и объем памяти росли и намного больше, чем следовало быбыло.Я забыл избавляться от 10 битовых карт в каждой итерации.Я вызвал dispose () для этих растровых изображений, и это исправило мою проблему.

С помощью снимка памяти VS вы можете сделать несколько снимков и сравнить их, чтобы увидеть, что изменилось.Я использовал диспетчер задач так же, как и инструменты управляемой памяти VS.Вы можете использовать диспетчер задач -> Процессы, чтобы увидеть, что происходит.Вы можете добавить столбцы для отслеживания таких объектов, как дескрипторы, потоки и объекты GDI, нажав «Вид» -> «Выбрать столбцы».

0 голосов
/ 21 января 2019

Когда объем памяти достигает подозрительно высокого уровня, вы можете приостановить отладчик, а затем использовать «Сделать снимок», чтобы получить снимок распределения памяти. Затем вы можете проанализировать, какие объекты используют разные объемы памяти.

См. эту ссылку для получения дополнительной информации об измерении использования памяти с помощью диагностических инструментов.

...