Память — раздел в таблице процессов top/htop, отражающий структуру адресного пространства процесса и фактическое использование физической памяти. Значения формируются на основе данных /proc/[pid]/statm, /proc/[pid]/status и таблиц отображения памяти (/proc/[pid]/smaps).
VIRT (virtual memory size) — общий объём виртуального адресного пространства процесса.
- Включает все отображённые области: код, данные, разделяемые библиотеки, mmap-файлы, анонимную память, выделенную, но ещё не использованную память, а также swap.
- Это не объём реально занятой RAM.
- Может значительно превышать физическую память из-за lazy allocation и overcommit.
- Используется для понимания масштаба адресного пространства процесса.
RES (resident set size) — объём физической памяти (RAM), фактически занимаемой процессом в данный момент.
- Включает только страницы, находящиеся в оперативной памяти.
- Не включает страницы, выгруженные в swap.
- Состоит из private и shared страниц.
- Один из ключевых показателей фактического потребления памяти.
SHR (shared memory) — объём разделяемой памяти в составе RES.
- Обычно включает страницы разделяемых библиотек и shared memory сегментов.
- Эти страницы могут учитываться в RES нескольких процессов одновременно.
- Не означает, что память полностью «разделена» или что она будет освобождена при завершении процесса.
- Используется для приблизительной оценки доли совместно используемой памяти.
%MEM — доля физической памяти, используемая процессом.
- Рассчитывается как отношение RES к общему объёму доступной RAM.
- Показывает относительную нагрузку на память.
- Удобен для быстрого выявления процессов с наибольшим потреблением RAM.
CODE — объём памяти, занятый исполняемым кодом процесса (text segment).
- Обычно включает сегмент
.textбинарного файла и загруженных библиотек. - В основном read-only и часто разделяемый между процессами.
- Обычно стабилен после запуска процесса.
DATA — объём памяти, занятый данными процесса.
- Включает heap, глобальные переменные и анонимные отображения.
- Основной источник роста памяти при выполнении.
- Может увеличиваться при динамическом выделении (malloc, new).
SWAP (в htop) — объём памяти процесса, выгруженный в swap.
- Отражает страницы, вытесненные из RAM.
- Рост значения указывает на давление по памяти.
- Прямо влияет на производительность из-за задержек ввода-вывода.
Эти поля используются для анализа memory-bound процессов, диагностики утечек памяти, оценки давления на RAM и понимания структуры адресного пространства процесса.