Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В следующем примере GFlags используется для задания флага включения тегирования пула на уровне системы в реестре. Затем он использует PoolMon (poolmon.exe), средство в комплекте драйверов Windows для отображения размера пулов памяти.
PoolMon отслеживает байты в страницах и непагированных пулах памяти и сортирует их по тегу пула. Периодически выполняя poolMon, можно определить пулы, которые постоянно расширяются с течением времени. Этот шаблон часто указывает на утечку памяти.
Заметка Теги пула постоянно включены в Windows Server 2003 и более поздних версиях Windows. В этих системах флажок "Включить тегирование пула" в диалоговом окне "Глобальные флаги" неактивен, а команды для включения или отключения тегирования пула завершаются ошибкой. Если тегирование пула не включено, PoolMon завершается ошибкой и отображает следующее сообщение: "Сбой запроса тэгов пула c0000002".
Чтобы обнаружить утечку памяти пула
Чтобы включить теги пула для всех процессов в версиях Windows, предшествующих Windows Server 2003, установите системный флаг Enable pool tagging в реестре. В следующей командной строке используется метод сокращения флага, но флаг можно определить по шестнадцатеричным значениям или использовать диалоговое окно "Глобальные флаги ":
gflags /r +ptg
Перезапустите компьютер, чтобы изменить реестр.
Периодически запустите poolMon с помощью следующей команды. В этой команде параметр /b сортирует пулы в порядке убывания размера.
poolmon /b
В ответ ПулМон отображает выделения из пулов памяти в порядке убывания размера, включая количество операций выделения и бесплатных операций, а также объем памяти, оставшейся в пуле (в столбце байтов).
Memory: 16224K Avail: 4564K PageFlts: 31 InRam Krnl: 684K P: 680K Commit: 24140K Limit: 24952K Peak: 24932K Pool N: 744K P: 2180K Tag Type Allocs Frees Diff Bytes Per Alloc ----------------------------------------------------------------------- CM Paged 1283 ( 0) 1002 ( 0) 281 1377312 ( 0) 4901 Strg Paged 10385 ( 10) 6658 ( 4) 3727 317952 ( 512) 85 Fat Paged 6662 ( 8) 4971 ( 6) 1691 174560 ( 128) 103 MmSt Paged 614 ( 0) 441 ( 0) 173 83456 ( 0) 482
Если значение в столбце байтов для выделения постоянно расширяется без очевидной причины, в этом пуле может возникнуть утечка памяти.
Снимите флаг включения тегирования пула.
В следующей командной строке используется метод сокращения флага, но флаг можно определить по шестнадцатеричным значениям или использовать диалоговое окно "Глобальные флаги ":
gflags /r -ptg
Перезапустите Windows, чтобы изменить реестр.
Заметка Используйте символ добавления (>>) для перенаправления выходных данных PoolMon в файл журнала. Позже вы можете просмотреть файл журнала, чтобы изучить тенденции в размере пула. Рассмотрим пример.
poolmon.exe /b >> poolmon.log