Фил Булл (Phil Bull)
philbull@gmail.com 2011
Майкл Хилл (Michael Hill)
mdhillca@gmail.com 2011, 2014
Просмотр карты памяти процесса.
Алексей Кабанов
ak099@mail.ru 2016

# Использование карт памяти

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

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

Чтобы увидеть карту памяти процесса:

Зайдите на вкладку Процессы.

Щёлкните правой кнопкой на нужном процессе в списке процессов.

Выберите Карты памяти.

# Чтение карты памяти

Адреса отображаются в шестнадцатеричном формате (основание 16).

Размеры отображаются с использованием двоичных приставок МЭК.

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

Сама программа и каждая из разделяемых библиотек имеют по три записи: одна для текстового сегмента чтения-исполнения, одна для сегмента данных чтения-записи и одна для сегмента данных только для чтения. Оба сегмента данных должны быть выведены на страницу во время подкачки.

## Свойства

Имя файла | Расположение разделяемой библиотеки, которая в настоящее время используется процессом. Если это поле пустое, информация о памяти в этой строке описывает память, принадлежащую процессу, имя которого отображается над таблицей Карты памяти.
Начало VM | Адрес, с которого начинается сегмент памяти. Начало VM, Окончание VM и Смещение VM вместе определяют местоположение на диске, в которое отображается разделяемая библиотека.
Окончание VM | Адрес, по которому заканчивается сегмент памяти.
Размер VM | Размер сегмента памяти.

Флаги

Следующие флаги описывают разные типы доступа к сегменту памяти, которые может иметь процесс:

## p

Сегмент памяти является частным для процесса и недоступным для других процессов.

## r

Процесс имеет право на чтение из сегмента памяти.

## s

Сегмент памяти используется совместно с другими процессами.

## w

Процесс имеет право на запись в сегмент памяти.

## x

Процесс имеет право на исполнение инструкций, содержащихся в сегменте памяти.

Смещение VM | Расположение адреса в сегменте памяти, отсчитывая от Начала VM.

Неразделяемая, разделяемая, чистая, использованная

Неразделяемая — доступ к страницам имеет один процесс

Разделяемая — доступ к страницам может осуществляться более чем одним процессом

Чистые страницы еще не были изменены, пока находятся в памяти, и могут быть отброшены при назначении на выгрузку

Грязные страницы были изменены, находясь в памяти, и должны быть записаны на диск при назначении на выгрузку

Устройство | Главный и младший номера устройства, на котором находится имя файла разделяемой библиотеки. Вместе они определяют раздел в системе.
Inode | Узел inode на устройстве, с которого загружается в память местоположение разделяемой библиотеки. Inode - это структура, которую файловая система использует для хранения файла, и присвоенный ей номер является уникальным.