Поделиться через


Поиск утечки памяти в режиме пользователя с помощью монитора производительности (PerfMon)

Если вы подозреваете утечку памяти в пользовательском режиме, вы можете использовать монитор производительности Windows (PerfMon) для измерения использования памяти отдельных процессов. Это средство поможет определить конкретный процесс, вызывающий утечку.

Open Performance Monitor from Windows Search. Enter perfmon (or Performance Monitor), then right-click the tool and select Run as administrator.

Добавление счетчиков данных

Добавьте счетчики данных обработки в основной граф монитора производительности, чтобы отслеживать изменения данных. Under Monitoring Tools, right-click Performance Monitor and select Properties. In the Properties dialog >Data tab, add the following counters:

  • Process>Private Bytes> (for each process to examine): Set the total amount of memory allocated for the specific process, not including memory shared with other processes.

  • Process>Virtual Bytes> (for each process to examine): Set the current size of the virtual address space for the specific process.

Установите продолжительность для фиксации достаточного количества активности.

Настройте общие параметры времени, чтобы с течением времени можно было записать график любых утечек данных. In the Properties dialog >General tab, configure the following values:

  • Sample every: Set the time to 600 seconds, which measures the value every 10 minutes.

  • Duration: Set the time to capture enough activity. For example, to monitor the data over 24 hours, set the value to 86400 (60 x 60 x 24 = 86,400).

Tip

Регистрировать данные графа в файл для последующего изучения.

Запуск приложения и мониторинг данных в пользовательском режиме

После настройки счетчиков и параметров времени запустите приложение или тестовую программу, которую вы хотите проверить наличие утечек. Разрешите программе некоторое время выполняться нетревоженно.

Important

Не используйте целевой компьютер во время выполнения программы для проверки утечки. Утечки обычно развиваются медленно. Для утечки данных может потребоваться несколько часов, чтобы накапливаться на обнаруживаемом уровне.

Просмотрите счетчики монитора производительности. При запуске мониторинга значения счетчиков быстро изменяются. Это может занять некоторое время, чтобы значения пулов памяти достигли устойчивого состояния.

  • Private Bytes: Some memory leaks appear in the data file in the form of an increase in private bytes allocated.

  • Virtual Bytes: Some memory leaks appear as an increase in the virtual address space.

Поиск конкретной подпрограммы с утечкой

После определения утечки памяти используйте служебную программу дампа пользовательского режима (UMDH), чтобы определить конкретную подпрограмму с проблемой памяти. Дополнительные сведения см. в разделе "Использование UMDH", чтобы найти утечки памяти в пользовательском режиме.