Неактивная память получила ужасный рэп из-за дерьмового имени. Его следовало бы назвать чем-то вроде «сделай свой Mac действительно быстрым во второй, третий и четвертый раз, когда он выполняет ту же задачу», за исключением того, что это тоже ужасное имя.
Apple переписала монитор активности, когда представила несколько новых функций и добавила сжатую память, поэтому часть этого больше не относится к macOS, которые не отображают «неактивную память», но это все же относится к управлению памятью Mac OS X, как описано в этой документации. версия Activity Monitor: https://support.apple.com/en-us/HT201538
Вот как я объяснил вещи кому-то новичку в концепции виртуальной памяти в OS X:
- Проводной : система не может работать без этого объема оперативной памяти (никогда не менялась)
- Активно: программы действительно используют эту память сейчас или в последние несколько секунд
- Неактивные: вещи, которые программы прочитали с медленного диска или из другого места и сказали, что они больше не нужны. Инженеры знают лучше, вы вернетесь в Facebook через несколько минут или перезапустите Word после выхода из него. То же самое происходит снова и снова на компьютерах.
- Свободно: полностью израсходованное ОЗУ - системе требуется только один или два МБ свободного места для покрытия запросов на краткосрочное распределение. Для самых больших выделений он просто использует часть неактивного ОЗУ, выделяя его активному / проводному и удаляя информацию о том, что он использовал для хранения.
Проблема возникает, когда Free + Inactive составляет менее чем примерно 1/3 от общего числа, и тогда все становится действительно медленным.
Неактивная память - это бонусная скорость / двойная память. Он служит бесплатным в любой момент, но также делает повторные задачи намного, намного быстрее, если система правильно угадала и сохранила что-то в ОЗУ, что вы будете делать снова. Это быстрее, чем подкачка памяти, поскольку она уже загружена в ОЗУ и ускоряет процесс, когда система виртуальной памяти делает хорошие предположения.
Когда вы задаетесь вопросом, является ли ОЗУ проблемой, вместо того, чтобы рассматривать каждую из 4 категорий (5, если вы считаете активный обмен), вы можете связать W + A как замедление новой программы / задачи и F + I как ускорение новая программа / задача. Чем больше у вас F + I, тем больше новых программ вы можете запустить до того, как ОЗУ будет нуждаться в обмене, чтобы манипулировать выделенной памятью.
Вам действительно не нужно знать, как работает своп, так как я упомянул об этом выше. По сути, когда программа бездействует и не использовалась в течение нескольких дней (или часов), система запишет эту оперативную память на жесткий диск, а не уничтожит программу. Это позволяет системе перемешивать и обрабатывать все виды вещей, связанных с управлением памятью, и не дает каждой программе необходимости общаться между собой, чтобы договориться о том, кто будет использовать меньше памяти, когда система выйдет из строя.
Вот реальный пример того, как используется неактивная ОЗУ.
- Закройте все приложения и убедитесь, что два приложения, которые мы тестируем, не настроены на автоматический запуск при входе в систему.
- Перезагрузите свой Mac
- Запустите монитор активности и наблюдайте за оперативной памятью
- Время, необходимое для запуска приложения A (MS Word будет хорошим выбором)
- Выйти
- Время, необходимое для запуска приложения B (Adobe тоже что-то подойдет)
- Выйти Б
- Время, сколько длится второй запуск A
- Выйти
- Второй запуск Time B
- Время А начинается в третий раз, когда Б работает.
Вы должны увидеть резкое ускорение для второго / третьего запуска, так как система учится хранить в неактивной оперативной памяти то, что нужно этим двум приложениям.
В вашем случае общее количество проводных и активных означает, что, вероятно, происходит некоторая перестановка на диск, и ваш Mac не так быстр, как мог бы быть, поскольку ваша неактивная оперативная память недостаточно велика для хранения всего, что вам может понадобиться для повторного использования. , Если у вас быстрый SSD-накопитель, это распределение ОЗУ в порядке, и вместо того, чтобы начинать замедляться, если менее половины вашей ОЗУ равно F + I, вы можете сократить объем примерно до 1/4 от общего объема ОЗУ для F + Я раньше не видел заметной медлительности. Эти рекомендации носят общий характер, и вы захотите посмотреть vm_stat 15
или какой-то подобный интервал, чтобы гарантировать, что непрерывная и средняя громкость не замедляет работу вашего Mac.
Число, которое является наиболее важным при определении того, нагружается ли ваш Mac памятью, является цифрой «Количество страниц». В Activity Monitor в Mavericks это больше не отображается, теперь они отображают информацию в «Swap Used:».
Вывод страниц означает, что ОС определила, что недостаточно ОЗУ для запуска всех запрошенных приложений и процессов. То, что он тогда делает, - это «страницы» на дисковые части памяти, которые он определяет, не используются активно. Это означает, что оперативная память (быстрая) заменяется на память жесткого диска (медленная). Если это часто происходит из-за того, что запущено много приложений, а пользователь переключается между приложениями, тогда будет много выходов страниц и входов страниц.
Если вы видите, что количество выходов страниц увеличивается, вам следует принять меры.
источник
Проблема на моем Mac заключается в том, что «неактивная» память никогда не очищается, если я не выполняю ручную очистку в окне команд. Он накапливается и накапливается до тех пор, пока не появится всплывающее окно с указанием убивать приложения. Даже после уничтожения всех моих приложений у меня все еще остается слишком много неактивной памяти, чтобы что-либо запускать. Таким образом, на моем Mac, работающем под управлением последней версии Mountain Lion, неверно, что неактивная память восстанавливается, когда свободной памяти становится мало. Либо у меня где-то есть приложение, которое заблокировало кусок неактивной памяти, которое никогда не освобождается, либо в iOS есть ошибка. (У меня 8 ГБ физической памяти ... этого должно быть достаточно!)
источник
vm_stat
когда это происходит? Что делает вас настолько уверенным, что может быть «слишком много» неактивной памяти, чтобы «что-нибудь запустить»? Насколько я понимаю, это все слухи, которые не имеют поддержки в коде, который вы знаете, на самом деле работает в ядре.Спасибо всем авторам и комментаторам, это была поучительная и полезная тема для меня. Мой недавний опыт может быть полезным для кого-то. Я использую свой Mac Mini с OS X10.8.1 и 16G RAM исключительно для прототипирования программного обеспечения, которое будет работать в другом месте. Я могу заверить вас, что я не буду «возвращаться в Facebook через несколько минут или перезапускать Word после выхода из него» - вместо этого я делаю это на своем MacBook.
Моя задача состояла в том, чтобы собрать большой массив данных, ввод-вывод отнимает много времени, поэтому идея состоит в том, чтобы прочитать как можно больший кусок данных за один раз, обработать их там, а затем записать обратно на диск , затем повторите процесс до конца, что занимает несколько часов. Я вижу, что каждый раз, когда я читаю новую порцию данных, неактивная память перепрыгивает - я полагаю, что системный ИИ предполагает, что я, возможно, захочу снова использовать старую порцию, а я - свободную падает память
После нескольких итераций этого процесса свободная память уменьшается до нескольких МБ, неактивная память освобождает еще несколько МБ, а затем, в конце концов, через несколько минут переключения между свободной и неактивной памятью, неактивная память освобождает до нескольких ГБ одновременно. Все так, как описывает @bmike, и vm_stat 15 и монитор активности показывают 0 постраничных выходов.
За исключением, может быть, не совсем. Несколько раз все шло гладко, я ухожу выпить кофе или ужин и не наблюдаю за процессом, а то, что не должно произойти, происходит, и процесс внезапно выбрасывает множество выгрузок страниц и замедляет процесс. Примите во внимание, что, вероятно, проблема заключается в моем дрянном коде, но я бы хотел отключить неактивную память, просто чтобы устранить этот источник изменчивости. Это сломано? Я бы не сказал так вообще, но я бы сказал, что я думаю, что управление памятью не оптимизировано для моего случая использования.
источник
Эта функция хороша, когда у вас много оперативной памяти, но когда ее нет, это довольно раздражает. На самом деле все дело в яблоке. Когда у вас есть мощный гаджет или Mac, все круто, но когда вы становитесь старше, все функции замедляются.
Поэтому вы должны использовать специальные приемы, чтобы справиться с этим.
Для неактивной памяти есть команда
purge
для ее освобождения.источник
В основном это сломано. Неактивная ОЗУ должна автоматически «очищаться» при низком уровне свободной ОЗУ. Какой смысл держать оперативную память для ранее открытых приложений, надеясь, что пользователь откроет ее снова? Тот факт, что свободной оперативной памяти мало, указывает на то, что в существующих приложениях ACTIVE может быть недостаточно оперативной памяти, и она заменяется сейчас. Хранить ГБ ОЗУ для закрытых приложений просто глупо. Согласно собственному описанию Apple, неактивная оперативная память должна очищаться или заимствоваться автоматически, когда свободной оперативной памяти недостаточно. Это явно не тот случай.
источник
vm_stat
вы считаете «больше нет свободной оперативной памяти»? Когда Mac "медленный", на что рассчитывают страница и страницаvm_stat 1
? Каждый раз, когда я наблюдаю за этим в проблемной системе, мне нравитсяvm_stat 15
запускаться в окне терминала (или входить в файловую систему), чтобы я мог точно знать, что такое пейджинговая активность, когда решаю, если / когда я настрою такие вещи, как пейджер. В этом примере 100 МБ свободной оперативной памяти, поэтому вряд ли даже под давлением подкачки.По сути, неактивная память ускоряет открытие ранее закрытых процессов. Если вы обнаружите, что Mac OS занимает слишком много памяти, вам не нужно, как на десятках вкладок, которые вы открывали в Safari или Chrome, просто используйте команду «purge» в Терминале. В OS X Mavericks просто используйте вместо этого «sudo purge» (вам нужно будет ввести свой пароль). Он экономит драгоценные секунды, когда вам нужно снова что-то открыть, но если вы хотите играть в игру с большим объемом ОЗУ или открыть приложение, требующее ОЗУ, я определенно рекомендую использовать команду очистки.
источник