Запись моментального снимка кучи
Windows Performance Recorder (WPR) позволяет snapshot кучи для определенных процессов в системе.
Эта snapshot кучи отличается от записи анализа кучи, так как она принимает snapshot представление кучи. Например, моментальный снимок кучи сохраняет всю информацию о выделении кучи в базе данных. При выполнении команды SingleSnapshot она экспортирует сведения о выделении в буфер трассировки. Snapshot содержит сведения о выделении, включая все стеки, созданные после включения snapshot.
Запись кучи snapshot трассировки
- Включение кучи snapshot трассировки. Существует два способа включения кучи snapshot трассировки: по имени процесса и по идентификатору процесса.
В следующем примере используется имя процесса:
wpr -snapshotconfig heap -name heaptest.exe //query snapshot config
wpr -snapshotconfig heap -name heaptest.exe enable //enable snapshot config
В следующем примере используется идентификатор процесса или PID:
wpr -snapshotconfig heap -pid 8048 enable //enable snapshot config
- Запуск трассировки с помощью wpr или wprui
с помощью wpr :
wpr -start heapsnapshot -filemode
Если параметр -name использовался для включения snapshot кучи, необходимо запустить процесс после включения конфигурации.
- Возьмите кучу snapshot
При каждом запуске snapshot база данных стека выделения экспортируется в буферы трассировки. Один snapshot (можно использовать несколько раз), например:
wpr -singlesnapshot heap <pid for foo.exe>
Периодические snapshot:
wpr -enableperiodicsnapshot heap <frequency in seconds> <pid for foo.exe>
- Сохраните трассировку с помощью wprui или wpr.
wpr -stop heapsnapshot.etl
- Отключение snapshot кучи
Вы можете отключить кучу с помощью PID или Name. Ниже приведены примеры обоих примеров.
Использование имени:
wpr -snapshotconfig heap -name Win32Project1.exe disable
Использование PID:
wpr -snapshotconfig heap -pid %_PID% disable
Примечание: Если параметр -name используется для включения кучи snapshot, он задает реестр IFEO внутри организации и будет применяться ко всем новым экземплярам процесса. Отключите его с помощью параметра SnapshotConfig по завершении тестирования, чтобы избежать ненужного сбора кучи. Кроме того, если архитектура ЦП процесса и ОС не совпадает (например, запуск приложения Win32 в 64-разрядной ОС), используйте параметр name (IFEO).