Поиск источника утечки активной памяти на Mac OS Lion
Возможный дубликат:
Mac OS X: что использует моя "активная" память?
Мой монитор активности показывает 6 ГБ активной памяти:
Тем не менее, мой столбец Real Memory не показывает ничего подобного:
(Ниже еще один экран, все меньше.)
Резервное копирование, вывод этой команды (которая суммирует использование памяти каждого запущенного процесса):
ps -axm -o "rss,comm" | awk 'BEGIN { s=0;}; {s=s+$1;}; END { printf("%.2f GB\n", (s/1024.0/1024));}'
дает 4.09GB
, так что мне кажется, что 2 ГБ утек. Иногда я вижу гораздо более широкие диапазоны, возможно, 2 или 3 ГБ от ps
команда и целых 7 или 8 ГБ активного использования, о которых сообщает Activity Monitor.
Я пытался выйти из системы и снова войти в систему и снова войти в нее, но активное использование по-прежнему намного выше, чем ОЗУ, о которой сообщает ps
и каждым процессом в Activity Monitor. Эти 2 ГБ активной памяти практически невозможно восстановить, пока я не перезагружусь. Есть ли способ а) обнаружить что протекает и б) вернуть его обратно?
Спасибо
1 ответ
Он не просочился, просто не стоит усилий, чтобы сделать его бесплатным. Ваша система не ограничена в памяти, поэтому наличие большей свободной памяти не принесет никакой пользы. Если система делает ее бесплатной, скорее всего, она либо никогда не привыкнет (в этом случае сделать ее бесплатной - это напрасная трата усилий), либо просто снова будет использоваться (в этом случае сделать ее свободной - напрасная трата усилий).
Свободная память нужна только в очень ограниченных обстоятельствах. И ваша система имеет более чем достаточно свободной памяти, чтобы справиться с этим.
Посмотрите этот ответ для более подробного объяснения того, почему вам нужно как можно меньше свободной оперативной памяти. Особенно эта часть:
Вы, должно быть, думаете: "Мне нужна свободная оперативная память, чтобы я мог использовать ее позже". Но сейчас позже, чем было раньше. И если вы используете его сейчас, вы также можете использовать его позже. Все, что происходит, если вы не используете его сейчас, это то, что вы навсегда потеряете возможность использовать его сейчас. Позже никогда не наступит - это всегда сейчас. Используйте оперативную память сейчас. Не сохраняйте его на потом, потому что потом вы захотите сохранить его и на потом.
Это не похоже на [на машине с 8 ГБ], если вы используете 4 ГБ, теперь вы можете использовать 12 ГБ позже. Если вы используете 7 ГБ сейчас, все, что происходит, это то, что 1 ГБ пропал впустую. Вам нужно как можно меньше свободной оперативной памяти, чтобы ваша система могла получить максимальную выгоду от имеющейся оперативной памяти. Вы не можете сохранить RAM. Возможность использовать эту оперативную память сейчас должна использоваться сейчас, или она навсегда потеряна.
Также смотрите этот ответ для более подробной информации о специфике "активной памяти" в OSX.