Программа RAMMap представляет собой утилиту, которая позволяет увидеть как Windows действительно распределяет оперативную память. Благодаря программе на оперативную память компьютера можно взглянуть как не на абстрактную сущность, а действительно составить представление о том, для чего и какими файлами она используется. Работает в версиях от Windows Vista и позднее.
Наиболее интересными для рядового пользователя, наверное, окажутся лишь некоторые из вкладок. Это Use Counts и File Details. Однако для полноты понимания как программа работает, от пользователя требуется понимание работы RAM в принципе.
Скачать программу с сайта производителя
Теоретические абзацы
Все процессы пользовательского режима и большинство процессов от имени ядра получают доступ к данным через адреса виртуальной памяти. Эти данные и исполняемый код могут находиться как в ячейках физической памяти планок RAM, так и в файле подкачки жёсткого диска, но все они объединены одним условием – в момент запуска система приклеивает их к рабочему набору конкретного процесса, который в данный момент чем-то занимается (то есть читает, записывает и выполняет). И утилита RAMMap подходит к памяти как к общесистемному источнику памяти, который распределяется между запущенными в Windows процессами.
Интерфейс RAMMap
Окно программы представляет из себя интерфейс, напоминающий чем-то Диспетчер задач Windows NT, и включает в себя вкладки (во время работы обновляем состояние позиций клавишей F5):
- Use counts (постраничная разбивка памяти)
- Processes (размеры рабочих наборов памяти)
- Priority summary (размеры памяти для процессов, ранжируемых по приоритету)
- Physical pages (объём затрачиваемой памяти на страницу)
- Physical Ranges (адреса физической памяти)
- File summary (данные файлов в RAM поимённо)
- File Details (данные памяти для конкретных физических страниц поимённо)
Посмотрим на каждую из вкладок RAMMap внимательнее.
Use counts
- Total – (самый нижний) – общий размер RAM “полагающийся” Windows; этот размер совпадает с тем, что вы видите в Свойствах системы как размер установленной ОЗУ
- Process Private – часть оперативной памяти, используемая исключительно отдельным процессом
- Mapped File – нанесённые на карту памяти отпечатки файлов, сохраняемые в виртуальную её часть. Это может быть и сам процесс нанесения снимков файлов (запись или чтение) или для кэша системных файлов
- Shareble – страницы памяти, которые могут использоваться сразу несколькими процессами
- Page Table – содержит в себе элементы таблицы страниц, которые описывают использование виртуального адреса
- Paged Pool – объединённая часть памяти ядра, которая может быть сохранена на диск
- Nonpaged Pool – часть памяти ядра, которую на диск нанести нельзя и которая должна оставаться в физической памяти всегда
- System PTE – элементы таблицы страниц позволяют наносить виртуальные адреса памяти в области физической памяти. Системные (System) элементы – это область памяти, используемая для динамической прорисовки системных страниц (диапазон адресов памяти для подключения устройств ввода-вывода, стеков ядра и прорисовки списков дескриптора памяти).
- Session Private – часть памяти, которая видима только конкретными драйверами или устройствами в текущей сессии. Эту часть памяти забирает себе Win32k.sys или системные драйверы (мышка, клавиатура, видео).
- Metafile – это часть системного кэша, состоящая из метаданных NTFS. Метаданные NTFS включают в себя MFT, а также другие файлы метаданных. Учитывая, что в базе MFT есть запись о каждом атрибуте, а каждый файл имеет как минимум один атрибут, и затем приплюсовать сюда остальные метаданные NTFS, можно составить представление о том, до каких размеров MFT может разрастись при большом количестве файлов в Windows.
- AWE – часть памяти, используемая интерфейсом AWE, который позволяет программам использовать физическую память с выходом за пределы 4-Гбайт виртуального адресного пространства.
- Driver Locked – это страницы, которые на некоторое время могут заблокированы в физической памяти определённым драйвером. Речь идёт опять же об устройствах ввода-вывода или целых логических дисках.
- Kernel Stack – память, закреплённая за областями оперативной памяти для потоков системного ядра.
- Unused – размер памяти, которая сейчас не используется. Она также видна в списках Zeroed, Free и Bad.
- Large Page – память, отведённая для поддержки страниц памяти большого объёма. Такая поддержка обеспечивает более эффективный доступ для программ, требующих соответствующих запросов к установленной в Windows памяти.
Посмотрим на столбцы вкладки Use Counts
- Total – общий размер памяти для группы страниц
- Active – (активные страницы) размер памяти, уже использующейся или готовой для немедленного использования без опасения за то, что возможно появление ошибки. Он составляется из того набора памяти, который уже находится в рабочем наборе одного или нескольких процессов или в одном из системных рабочих наборов (системный кэш), а также той части главной памяти (main memory), которую нельзя выделять под страницы виртуальной памяти.
- Standby (страницы ожидания) – страницы памяти, которая сейчас не используется. Они в физической памяти “присутствуют”, но перед тем, как к ним обратятся, менеджер памяти сначала их перенаправит (вернёт в список Active, запишет в нулевую память Zeroed). По сути, это и есть кэш памяти – тот объём памяти, что хранится в RAM “на всякий пожарный”; лучше, чем выгружать всю память на диск полностью, когда она в полном объёме не требуется
- Modified – память, перенесённая из рабочего набора страниц и изменённая вовремя работы. Схожа с предыдущими страницами, но это страницы физической памяти, которые были скорректированы и потому перед повторным использованием должны быть сначала записаны на диск
- Modified no write – те же страницы изменённой в процессе работы памяти, но помеченные как “запрещённые к автоматической записи” на диск
- Transition – временное состояние страницы памяти, которая заблокирована в памяти в данный момент неким драйвером
- Zeroed – память, помеченная как пустая и готовая к перемещению. Во время загрузки величина в этом столбце примечательная, однако когда система “устаканится”, большая часть страниц отсюда перебежит куда-то в сторону Standby в виде кэша
- Free – свободные страницы пригодны к использованию, однако содержат в себе некие остаточные данные и потому, перед тем как попасть к пользователю, должны быть помечены как нулевые (Zeroed) в целях безопасности. Обычно это та часть памяти, которая высвобождается после остановки какой-то задачи.
- Bad – эти страницы помечены как дефектные, так как вызвали ошибки в работе оборудования.
Processes
Вкладка содержит анализ страниц физической памяти, которые ассоциируются с конкретным процессом. Здесь мы можем увидеть номер сессии процесса в текущем сеансе (Session), присвоенный процессу номер (PID). Остальные столбцы вдоль каждого процесса показывают какую часть RAM, выделяемого для этого процесса, занимают страницы пользователя или/и системы: по показаниям в этой вкладке можно судить о том, от чьего имени процесс запущен, не “кривит” ли память. Столбец Page Table показывает общее количество памяти, выделяемой ядром этому процессу. Total суммирует показания по столбцам с Private по Page Table (именно показатель Total и отображается в Windows-ском Диспетчере задач). Однако Диспетчер в окне по умолчанию суммирует всё, что запущено от имени одной службы/программы. Надо лишь развернуть характерный столбец:
Priority Summary
Вкладка отображает объёмы памяти, выделяемые/выделяемых на процессы по присвоенному системой приоритету с момента включения компьютера. Самая интересная здесь вкладка – Repurposed. Она показывает, сколько памяти было отозвано у других задач для удовлетворения нужд более приоритетных процессов с момента запуска Windows. Идеальный вариант с эффективно работающей системой – этот столбец по “нолям”. Этого достичь, однако, почти нереально. Более того, высокие числа в этом столбце с процессами в высоком приоритете (с 5-го и выше) говорят о том, что ресурсов системе либо не хватало, либо не хватает до сих пор: впору задуматься о приобретении дополнительной планки:

Physical Ranges
Следующая вкладка (чисто информационная) отображает эффективные диапазоны адресов физической памяти. Разрывы в диапазонах отображают физические адреса, закреплённые за определёнными устройствами.
File Summary
В этой вкладке отображается полный путь к файлам, отнесённым системой в память. Столбцов несколько: Total – общая сумма, Active – на данный момент, Standby – готовая примкнуть и т.д. Сюда попадает всё: от файлов загрузчика до драйверов для мыши и клавиатуры. Можно взглянуть пристальнее, проранжировав столбцы по имени, месту запуска и т.п.
File Details
Одна из самых информативных. Именно здесь можно увидеть информацию из предыдущих вкладок, но для каждого отнесённого в память системой файла. Здесь и диапазон адресов, и рабочий набор страниц и назначенный приоритет. Стоит лишь развернуть крестик слева от имени файла:
Как работать с RAMMap ?
Помимо информативной части вкладок, по которым можно судить о том, как Windows справляется с запускаемыми процессами, разнося задачи по страницам памяти, и выискивая пропажу гигабайт оперативки, в шапке RAMMap имеется кнопка действий, позволяющая принудительно “изымать” страницы памяти. Как вы понимаете, этот процесс ничего общего с принудительной остановкой какого-то процесса через Диспетчер задач не имеет. Так, нажав по кнопке Empty (Очистить) программы:
взору откроются пять основных команд очистки страниц памяти RAM, работа с которыми сейчас конкретными процессами не ведётся, и которым после очистки может быть присвоен иной статус, что, в свою очередь, позволит им включиться в работу уже в составе приложения, которому, быть может, как раз сейчас памяти и не хватает. Далее по списку вниз:
- Empty Working Sets – очистит работающие наборы. Освобождает память в системных и пользовательских наборах (процессы ядра останутся нетронутыми – система “не упадёт”), перенося высвободившуюся память на страницы Stanby и Modified.
- Empty System Working Set – очистит только системный кэш
- Empty Modifed Page List – очистит память из страниц списка Modifed, записывая несохранённые данные на жёсткий диск и сразу перенесёт их на страницы Standby
- Empty Standby List – избавится, в свою очередь, от страниц из списка Standby, добавляя в свободную память (список Free)
- Empty Priority 0 Standby List – очистит страницы памяти из списка страниц для процессов с низким приоритетом, отправляя их в список Free.
Помните, что выполнение задач по очистке потребует загрузки процессора и переорганизации памяти, что может занять некоторое время. Обновлённые данные по результатам оптимизации можно наблюдать во всех вкладках по нажатию, напомню, клавиши F5.
RAMMap – анализ и сохранение результатов
Для работы с системой не обязательно работать с окном непосредственно до эксперимента и после. Разработчики предлагают поместить исполнительный файл программы в папку с другими системными утилитами Windows/System32 и запускайте через cmd от имени администратора:
rammap.exe 1.rmp /accepteula
RAMMap фоном проверит состояние памяти и сохранит данные в файл 1.rmp в той же директории. Чтобы открыть сохранённый вами или присланный на анализ файл, можно запустить cmd с таким скриптом:
rammap.exe -o 1.rmp
или для владельцев Windows 64-x, помогающим 32-х битным соратникам (а вот из 32-х битной версии файлы с 64-х-“битки” уже не прочитать):
rammap.exe -run32 -o 1.rmp
Впрочем, команды чтения и записи в файл доступны из окна самой команды.
Успехов.