Ответ 1
Чтобы обнаружить утечку памяти с помощью Performance Monitor, выполните мониторинг этих счетчиков:
- Счетчик памяти/доступного байта позволяет просмотреть общее количество байтов доступной памяти. Это значение обычно колеблется, но если у вас есть приложение с утечкой памяти, оно будет уменьшаться время.
- Счетчик TheMemory/Committed Bytes неуклонно растет, если происходит утечка памяти, поскольку количество доступных байтов память уменьшается, количество зафиксированных байтов увеличивается.
- Счетчик Process/Private Bytes отображает количество байтов, зарезервированных исключительно для определенного процесса. Если утечка памяти это значение будет стремительно расти.
- Счетчик байтов процесса/файла страницы отображает размер файла подкачки. Windows использует виртуальную память (файл подкачки) для дополнения физическая память устройства. Как физическая память машины начинает заполнение, страницы памяти перемещаются в файл подкачки. Это нормально для файл подкачки, который будет использоваться даже на машинах с большим количеством памяти. Но если размер файла подкачки постоянно увеличивается, то хороший знак утечка памяти.
- Я также хочу упомянуть счетчик счетчиков Process/Handle Count. Приложения используют дескрипторы для определения ресурсов, которые они должны доступ. Если происходит утечка памяти, приложение часто будет создайте дополнительные ручки для идентификации ресурсов памяти. Таким образом, рост количество обработчиков может указывать на утечку памяти. Тем не менее, не все утечки памяти приведут к увеличению количества обработчиков.
По моему опыту это точно.
Я также отсылаю вас к этому блогу Microsoft Advanced Debugging от Тесса, сотрудника Microsoft. Кто предлагает следующие счетчики. Я нашел выше, чтобы быть более чем достаточно, чтобы указать на утечку памяти, но я верю, что инструкции Tess могут обеспечить более глубокое понимание проблемы.
Отладка демонстраций - обзор памяти
- Память .NET CLR/# Bytes во всех кучах
- Память .NET CLR/Большой размер кучи объектов
- Размер кучи памяти .NET CLR/Gen 2
- Размер кластера .NET CLR Memory/Gen 1
- Размер кластера .NET CLR Memory/Gen 0
- Процесс/частные байты
- Процесс/виртуальные байты