После рабочего дня на моем MacBook Pro под управлением Mac OS X 10.6.5 Activity Monitor показывает, что большая часть 8 ГБ памяти моего компьютера является «неактивной», и только небольшая полоска круговой диаграммы «свободна». Это даже когда я закрыл все приложения, с запущенным только Finder.
Что это значит? «Неактивная» память чем-то занята? Или он действительно доступен для использования приложениями? Спасибо.
Ответы:
OS X, как и большинство современных операционных систем, использует систему виртуальной памяти для управления памятью. Помимо прочего, это позволяет операционной системе обрабатывать компьютер как имеющий неограниченный пул памяти. Чтобы добиться этого, ОС будет выгружать неиспользуемые части оперативной памяти в хранилище дисков, известное как файл подкачки .
Конечно, объем оперативной памяти не ограничен, поэтому OS X разделяет объем оперативной памяти на четыре категории: проводная, активная, неактивная и бесплатная. Операционная система требует проводной памяти и никогда не может быть выгружена из памяти. Активная память - это память, используемая в настоящее время запущенными программами. Неактивная память недавно использовалась программами, которые были прерваны (или не использовались в течение длительного времени). Свободная память - это, как следует из названия, оперативная память, которая не используется.
Когда вы запускаете программу, она загружается в активную память. Однако при выходе из программы она не удаляется из ОЗУ; скорее, он столкнулся с неактивной памятью. Вот почему часто быстрее перезапустить программу - она все еще находится в оперативной памяти (попробуйте это с большой программой, такой как Firefox).
Как только вся ваша память будет использована (свободной памяти будет 0), ОС запишет неактивную память в файл подкачки, чтобы освободить место в активной памяти.
Если программа выгружается в файл подкачки, и вы перезапускаете ее, она извлекается из файла подкачки в активную память.
Короче говоря, на самом деле вам все равно, если у вас мало свободной памяти. Фактически, вы хотите, чтобы она была низкой - свободная память - это потраченная впустую память (так как ОС не использует ее ни для чего).
При изучении того, сколько памяти использует ваш компьютер, вы на самом деле хотите обратить внимание в основном на используемый Swap , который сообщает вам размер файла подкачки виртуальной памяти, и Page ins , который говорит вам, как часто ОС извлекает память из файла подкачки. в активную память.
источник
Скорее всего, это не проблема, и, фактически, потенциально ускоряет работу вашего компьютера.
Все (большинство?) Операционных систем используют дисковый кэш, который хранит некоторые недавно использованные файлы в памяти, что позволяет ускорить повторный доступ к этим файлам. Дисковый кеш в OS X имеет переменный размер и будет отображаться как «Неактивная память».
Если какой-либо программе требуется больше памяти, OS X очистит часть дискового кэша (наименее недавно использованные файлы), чтобы освободить место для запуска / расширения программы.
Я обнаружил, что, если я много занимаюсь компиляцией или сортировкой фотографий (то есть последовательно обращаюсь к тысячам файлов), дисковый кэш будет расширяться и использовать много неактивной памяти. При условии, что это только этот дисковый кеш, его не о чем беспокоиться.
Если это фоновый процесс или приложение, которое расширяет использование памяти (но его страницы помечены как неактивные), вы сможете определить, проверяя любые программы с очень высоким использованием «реальной памяти» в Activity Monitor. Если там нет ничего явно большого (т. Е. Общий объем далек от 8 ГБ), то это будет файловый кеш.
Вы должны увидеть, что использование свопа мало, и если вы откроете программу, интенсивно использующую память, объем неактивной памяти уменьшится без необходимости свопинга на диск.
(Я считаю, что какое-то время в 10.4 или 10.5 была ошибка, из-за которой она не всегда очень эффективно освобождала эту память и вызывала перестановку, несмотря на большой дисковый кэш, но, по моему опыту, это решается в 10.6).
источник
«Неактивная» память доступна для использования другими программами - это просто кеширование программ или данных, которые вы недавно использовали, на случай, если они вам понадобятся снова. Если вы запускаете разные программы или нуждаетесь в других данных, кэшированная память будет очищена и предоставлена для вашей новой рабочей нагрузки по мере необходимости.
Во всяком случае, это теория, и я считаю, что это правильно. Однако я нашел эту ссылку на утилиту «очистки», которую кто-то написал, потому что они не думали, что неактивная память освобождается достаточно быстро.
Для официальной документации по теме, прочитайте это (и ищите «неактивный»).
источник
Начиная с OS X 10.5, существуют очевидные проблемы с управлением памятью в MAC OS X.
Мне наконец удалось воспроизвести проблемный сценарий, поэтому я запустил тест и записал экран в видео.
Проблема производительности MAC OS X Lion - сломано управление памятью
Я запускаю команду tar + bzip, которая является базовым компонентом Unix, для большого количества файлов изображений в моей папке Pictures /. Непосредственно перед запуском я запускаю команду «purge», чтобы удалить неактивные / кэшированные данные программы.
На видео видно, что объем свободной памяти начинает очень быстро падать, а неактивность постоянно увеличивается. Если вы посмотрите на команду "bsdtar", она займет только фрагмент оперативной памяти, поэтому проблема не в этом процессе. Вы не можете сказать, что это утечка памяти программы, потому что тогда проблема не в неактивном ОЗУ, а в активном / проводном.
Когда объем свободной памяти упал ниже 100 МБ, я запустил некоторые приложения, такие как Safari, iPhoto и MS Word, и вы можете увидеть в видео, что запуск приложения занимает даже минуты, когда обычно (при наличии свободной оперативной памяти) он займет около 3-5 секунд, чтобы загрузить.
Я запускаю тот же сценарий и те же команды на моем Linux Centos 6, никаких проблем! Использование памяти составляет около 10-20 Мб, проблем с кешем / буфером нет.
Управление памятью должно быть сильно нарушено в Mac OS X!
источник
Это обсуждение имеет смысл только в том случае, если утверждение о том, что «ваш компьютер будет работать быстрее, когда свободной памяти недостаточно» - было бы верным. Если мой настольный Mac не подключен странно, в тот момент, когда моя свободная память (отслеживаемая) начинает уменьшаться, любая программа, которую я запускаю в это время, начинает замедляться до такой степени, что я ничего не могу сделать, пока она сама не вернется обратно или моим вмешательством в «Свободную память». У меня есть iMac 2118 (2006 или более поздняя версия), объем памяти которого составляет 3 ГБ, поэтому я стараюсь управлять им, когда могу, но это очень расстраивает. Есть предположения?
источник