Это мой вывод htop:
Например, меня смущает этот скрипт ruby:
Сколько физической памяти он использует? 3+1+8+51+51
? 51
? 51+51
?
да, я смотрю на это Но какая память используется моим скриптом? Почему есть два
—
Лай Юй-Сюань
51
с? Это потребляет 102 мегабайта? Или только 51 мегабайт? Во внешнем РЭСЕ процесса содержит внутренние RES процесса, поэтому 3
, 1
, 8
все меньше 51
?
Есть два 51, потому что процесс раздвоен. Скорее всего, он не потребляет 102 мегабайта, потому что каждый из двух процессов использует одни и те же 51 мегабайт, но это сложно определить. Другой процесс RES содержит внутренний процесс, если эта память также находится в другом процессе, а не если нет. Поля RES показывают, сколько физической памяти использует каждый процесс, но другие процессы могут (или не могут) использовать ту же самую физическую память.
—
Дэвид Шварц
Если вы хотите узнать, используют ли два процесса одну и ту же память, используйте pmap -d <идентификатор процесса>
—
Sirch
@ LaiYu-Сюань: Да, вы не правы. Страницы не копируются, они являются общими. Они копируются только в том случае, если какой-либо процесс записывает на страницу, тогда их необходимо разделить. (Это называется «копировать при записи» или «CoW».)
—
Дэвид Шварц
RES
столбец - это тот, на который вы хотите посмотреть.