Файл: Руссинович М., Маргозис А. Утилиты Sysinternals. Справочник администратора 2012.pdf

ВУЗ: Не указан

Категория: Книга

Дисциплина: Операционные системы

Добавлен: 29.10.2018

Просмотров: 32994

Скачиваний: 742

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

212  Часть 

II   

Работа с утилитами

С помощью VMMap можно сделать несколько моментальных снимков 

памяти процесса и отобразить его изменения в виде графика, чтобы найти 
все изменения, произошедшие между моментами создания снимков. В со-
четании с параметрами фильтрации и обновления это позволяет определять 
источники использования памяти процесса и расход памяти функциями 
приложений.

Кроме того, VMMap «впрыскивает» в процессы свою DLL для монито-

ринга распределения их памяти, путей к коду и стеков вызовов, формирую-
щих данную картину распределения памяти. При наличии полных символов 
VMMap покажет и строку исходного кода, вызвавшего то или иное измене-
ние в распределении памяти.

Рис. 7-1.  Главное окно VMMap

VMMap поддерживает не только представления с гибкими возможностя-

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

VMMap — идеальная утилита для разработчиков, желающих понять и 

оптимизировать использование памяти их приложениями. (Увидеть обще-
системное распределение системной памяти в Windows можно с помощью 
утилиты RAMMap, описанной в главе 14.) VMMap работает в Windows XP 
(редакции x86 и x64) и выше.

SIN_ch_07.indd   212

27.12.2011   14:30:22


background image

Утилиты для работы с процессами и диагностики 

Глава 7  213 

Запуск VMMap и выбор процесса

Первое, что нужно сделать, запустив VMMap, — выбрать процесс для ана-
лиза. Если не указать процесс во входном файле или командной строке (см. 
ниже), VMMap откроет окно Select or Launch Process (Выбор или запуск 
процесса)
. На вкладке View a Running Process (Просмотр запущенного 
процесса)
 можно выбрать уже запущенный процесс, а с вкладки Launch 
and Trace a New Process (Запуск и отслеживание нового процесса)
 можно 
запустить новый процесс и следить за его распределениями памяти. Окно 
Select or Launch Process (Выбор или запуск процесса) можно открыть и 
позже, нажав Ctrl+P.

Просмотр запущенного процесса

Выберите процесс на вкладке View a Running Process (Просмотр запущен-
ного процесса)
 (рис. 7-2) и щелкните OK. Чтобы быстро найти процесс по 
идентификатору (PID) или по использованию памяти, щелкните на любом 
заголовке столбца, чтобы отсортировать строки по этому столбцу. Доступны 
следующие столбцы: User (Пользователь),  Private Bytes (Байты закры-
той памяти)
Working Set (Рабочий набор) и Architecture (Архитектура) 
(в последнем показано, является ли процесс 32-разрядным или 64-разряд-
ным). Чтобы обновить список, щелкните кнопку Refresh (Обновить).

Рис. 7-2.  Окно Select or Launch Process со списком запущенных процессов

На вкладке View a Running Process (Просмотр запущенного процес-

са) перечислены только те процессы, которые VMMap может открыть. 
Если VMMap запущена без администраторских прав (включая привилегию 
Debug [Отладка]), список будет включать только процессы, запущенные тем 
же пользователем, что запустил VMMap, на том же или более низком уровне 
целостности (IL). В Windows Vista и выше можно перезапустить VMMap 

SIN_ch_07.indd   213

27.12.2011   14:30:22


background image

214  Часть 

II   

Работа с утилитами

с повышенными правами, щелкнув кнопку Show All Processes (Показать 
все процессы)
 или выбрав команду меню File | Run As Administrator (Файл 
| Запустить от имени администратора)
.

В Windows с архитектурой x64 VMMap может анализировать 32- и 64- 

разрядные процессы. Для анализа 32-разрядных процессов VMMap запу-
скает свою 32-разрядную версию и 64-разрядную для анализа 64-разрядных 
процессов. (Подробнее см. в главе 1.) Если использовать параметр команд-
ной строки -64 (см. ниже), 64-разрядная версия утилиты будет использо-
ваться для анализа всех процессов.

Запуск и мониторинг нового процесса

Если запустить приложение из VMMap, оно получит инструментарий для 
отслеживания отдельных операций выделения памяти и соответствующих 
вызовов в стеке. Введите путь к приложению и, если требуется, аргументы 
командной строки и папку для запуска, как показано на рис. 7-3, после чего 
щелкните OK.

Рис. 7-3.  Запуск и отслеживание нового процесса

VMMap подгружает свою DLL в целевой процесс при его запуске и пере-

хватывает его вызовы API виртуальной памяти. Кроме типа выделяемой 
памяти, размера и сведений о ее защите, VMMap собирает данные о стеке 
вызовов в момент выделения. VMMap по-разному группирует эти сведения 
(см. ниже в этой главе).

В Windows с архитектурой x64 VMMap может “впрыскивать” DLL cо 

своим инструментарием и отслеживать программы для x86 и x64, при этом 
запускается 32- или 64-разрядная версия утилиты, соответственно. Однако 
в Windows x64 VMMap не может отслеживать программы .NET, собранные 
для «любого ЦП» («Any CPU»), это возможно только в 32-разрядных вер-
сиях Windows. Однако мониторинг возможен и в 64-разрядных версиях 

SIN_ch_07.indd   214

27.12.2011   14:30:23


background image

Утилиты для работы с процессами и диагностики 

Глава 7  215 

Windows — путем выбора на вкладке View a Running Process (Просмотр 
запущенного процесса)
 окна Select or Launch Process (Выбор или запуск 
процесса)
.

 Примечание  Архитектура «Any CPU» используется по умолчанию при сборке при-

ложений на C# и Visual Basic .NET в Visual Studio 2005 и выше.

Окно VMMap

После выбора или запуска процесса VMMap анализирует его, показывает 
графическое представление виртуальной и физической памяти, а также таб-
личные представления Summary (Общие) и Details (Подробно). В них 
типы памяти представлены различными цветами. Представление Summary 
также выделено отдельным цветом.

Первая гистограмма в окне VMMap (рис. 7-1)  — Committed (Переданная)

Ее разноцветные части показывают относительные пропорции различных 
типов памяти, преданной в адресное пространство процесса. Также она слу-
жит эталоном, с которым сравниваются две другие диаграммы. Общее чис-
ло, показанное над правой частью диаграммы, показывает не всю распреде-
ленную память, а только «доступную» процессу память. Области, которые 
пока только зарезервированы, еще не доступны, а потому не отображаются 
на этой диаграмме. Другими словами, сюда включается физическая память 
(ОЗУ), память из файла подкачки и спроецированных в память файлов.

Вторая диаграмма — Private Bytes (Байты закрытой памяти). Здесь ото-

бражается память процесса, не разделяемая с другими процессами, выделен-
ная в ОЗУ или файле подкачки. Сюда входит стек, кучи, неформатирован-
ная виртуальная память, страничные таблицы и области чтения-записи про-
екций образов и файлов. Надпись над правой частью диаграммы показывает 
общий размер собственной памяти процесса. Цветные области диаграммы 
показывают пропорции различных типов закрытой памяти. Отношение раз-
мера цветных областей к общей длине диаграммы показывает их долю в ис-
пользуемой виртуальной памяти.

Третья гистограмма показывает рабочий набор процесса. Рабочий набор — 

это виртуальная память процесса, загруженная в физическую оперативную 
память. Как и на предыдущей диаграмме, цветные области показывают доли 
различных типов памяти в ОЗУ, а их размер — относительную величину по 
сравнению с общей виртуальной памятью, выделенной процессу и загру-
женной в ОЗУ.

Заметьте, что эти диаграммы показывают только относительные пропор-

ции различных типов памяти, но не являются картами памяти, отображаю-
щими ее размещение. Такую карту для 32-разрядных процессов предостав-
ляет окно Address Space Fragmentation (Фрагментация адресного про-
странства)
, описанное далее в этой главе.

Под этими диаграммами расположена таблица Summary View (Сводка)

в которой указаны разные типы памяти (см. раздел «Типы памяти» ниже), 

SIN_ch_07.indd   215

27.12.2011   14:30:23


background image

216  Часть 

II   

Работа с утилитами

общий объем каждого типа, объем переданной процессу памяти и объем фи-
зического ОЗУ. Можно выбрать тип памяти в этой таблице, чтобы отфиль-
тровать содержимое секции Details View (Подробные сведения). Таблицу 
можно отсортировать по значениям любого столбца, щелкнув его заголо-
вок. Если щелкнуть тот же заголовок еще раз, данные будут отсортированы 
в обратном порядке. Порядок столбцов можно изменять, перетаскивая их. 
Можно также изменять ширину столбцов, растягивая границы между их за-
головками.

Секция Details View (Подробные сведения), расположенная под табли-

цей Summary View, содержит информацию о каждой области памяти вирту-
ального адресного пространства процесса, работающего в пользовательском 
режиме. Чтобы отображался только один тип, выберите этот тип в таблице 
Summary View. Чтобы вернуться к просмотру всех типов памяти, выберите 
в таблице Summary View строку Total (Всего). Сортировку, порядок и ши-
рину столбцов в секции Details View можно изменять так же, как и в табли-
це Summary View.

Строки типов памяти в секции Details View, можно раскрывать, чтобы 

увидеть блоки, которыми выделялась память этого типа. Такая ситуация 
бывает, например, когда резервируется крупный блок памяти и передается 
процессу по частям. Это происходит и когда загрузчик образа или прило-
жение создает проекцию файла, а затем создает несколько проецированных 
представлений этой проекции; например, чтобы установить разную защиту 
для разных областей проекции. Можно раскрывать и сворачивать отдель-
ные группы подчиненных сопоставлений, щелкая на значках (+) и (–) в сек-
ции  Details View. Также можно раскрыть или свернуть все группы сразу, 
выбрав в меню Options (Параметры) команду Expand All (Раскрыть все) 
или Collapse All (Свернуть все). Верхняя строка такой группы показывает 
суммы компонентов группы. Когда выбирается другой порядок сортировки, 
блоки остаются в строках верхнего уровня и сортируются внутри группы.

Если вам не нравится шрифт, выбранный для VMMap по умолчанию, мо-

жете выбрать другой шрифт для Summary ViewDetails View и некоторых 
диалоговых окон.

Типы памяти

VMMap разделяет выделенную память на несколько типов.
•  Образ (Image) — такая память представляет исполняемые файлы, такие 

как EXE и DLL, загруженные в процесс загрузчиком образов. Заметьте, 
что этот тип не включает исполняемые файлы, загруженные как файлы 
данных, которые относятся к типу памяти Mapped File (Проецируемый 
файл). Области исполняемого кода обычно доступны только для чтения 
и выполнения, возможно их разделение. Области данных, такие как ини-
циализированные данные, обычно доступны для чтения и записи или 
с копированием при записи. Когда изменяются страницы, доступные c 

SIN_ch_07.indd   216

27.12.2011   14:30:23