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


GFlags и PageHeap

Эта версия GFlags включает в себя функциональные возможности PageHeap (pageheap.exe), средство, которое позволяет отслеживать выделение кучи в Windows. PageHeap позволяет функциям Windows, которые резервирует память на границе каждого выделения для обнаружения попыток доступа к памяти за пределами выделения.

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

  • Чтобы включить стандартную проверку кучи страниц для всех процессов, используйте gflags /r +hpa или gflags /k +hpa.

  • Чтобы включить стандартную проверку кучи страниц для одного процесса, используйте gflags /p /enable ImageFileName.

  • Чтобы включить полную проверку кучи страниц для одного процесса, используйте gflags /i ImageFileName +hpa или gflags /p /enable ImageFileName /full.

Все параметры кучи страниц, за исключением /k, хранятся в реестре и остаются эффективными, пока не измените их.

Обратите внимание, что функция PageHeap активна только в том случае, если проверка PageHeap была включена до запуска образа. Для длительных процессов, таких как W3WP для IIS в рабочей среде, это означает, что проверка не начнется до перезапуска процесса. Аналогичным образом, если PageHeap отключен во время выполнения процесса, проверка продолжится до перезапуска процесса. При выполнении одной и той же команды GFlags повторно, в то время как процесс выполняется или нет, не имеет дополнительных последствий. Это связано с тем, что включение PageHeap с помощью команды GFlags является идемпотентным.

Конфигурации PageHeap также сохраняются во время завершения процесса и перезагрузки системы. Перезагрузки системы можно использовать для повторной инициализации процесса после настройки требуемых параметров PageHeap, но его нельзя использовать для отключения функциональных возможностей после включения. Отключение PageHeap должно выполняться явным образом.

Используйте осторожность при интерпретации флажка "Включить кучу страницы" для файла изображения в диалоговом окне GFlags. Он указывает, что проверка кучи страниц включена для файла изображения, но не указывает, является ли она полной или стандартной проверкой кучи страниц. Если результаты проверки от выбора флажка, для файла изображения включена полная проверка кучи страницы. Однако если результаты проверки из использования интерфейса командной строки, проверка может представлять включение полной или стандартной проверки кучи страницы для файла изображения.

Чтобы определить, включена ли полная или стандартная проверка кучи страниц для программы, в командной строке введите gflags /p. В результирующем отображении трассировки указывает, что для программы включена стандартная проверка кучи страниц и полные трассировки указывают, что для программы включена полная проверка кучи страниц.