ryg

Освобождение оперативной памяти в Mac OS X

Управление оперативной памятью в Mac OS организованно очень хорошо, но иногда возникает ситуация кода она переполняется из-за большого количества программ или из-за программ "пожирающих память. В этом случае система начинает использовать файл выгрузки (swop) и выгружает часть оперативной памяти на жесткий диск, и начинает "тормозить". Сначала я грешил на перегрев процессора, но однажды во время анализа я обнаружил, что даже завершение ряда задач и охлаждение процессора не дает желаемого результата. Тогда я обратил внимание на память.

В системном мониторе в разделе "системная память" я обнаружил следующую картину:

Свободной памяти 239,3 МБ
Неактивная память 2,08 ГБ

Причем эта цифра существенно не менялась даже после завершения ряда программ. Тогда я начал выяснять, что понимает система под термином "Неактивная".

Что говорят термины :

Свободная -память которая сейчас не используется для каких либо процессов и программ и может быть распределена для использования запускаемым программам

Зарезервированная - память которую Mac резервирует для своих внутренних нужд, таких как ядро и процессы связанные с функционированием операционной системы. У меня 3,27 Гб связана с работающим сервером apache и MySQL

Активная - память, которая в данный момент используется программами и процессами на Mac ( в данном случае эта память отдана виртуальной машине под parallels)

Неактивная - это память, которая использовалась завершенными программами не так давно и OS X держит ее зарезервированной для быстрого повторного запуска. Если вы попытаетесь запустить программу повторно, то OS X не будет заново распределять оперативную память, а возьмет зарезервированную память и данные в ней и отдаст заново запускаемой программы. Такие действия значительно ускоряют повторный пуск. Неактивная память не всегда остается таковой, через некоторое время она освобождается и становится Свободной

Виртуальная память - общий объем виртуальной памяти выделенной для всех процессов Mac OS X

Загрузка/выгрузка страниц - показывает интенсивность обмена между оперативной памятью и жестким диском. Чем больше цифра, тем больше тормозит OS X. В скобочках показаны недавние показатели

Использование своп - размер файла выгрузки памяти на жестком диске

Для улучшения ситуации можно использовать команду Терминала

   purge
В версии Mac OS X 10.9 Maveriks для выполнения данной команды требуются права супер-пользователя
 sudo purge 

Она позволит очистить "неиспользованную память" в пользу свободной. Время исполнения команды Purge до двух минут. В моем случае это дало следующий результат:

Оперативная память в Mac OS X

ВАЖНО: иногда для выполнения данной команды может потребоваться наличие установленного XCode и developer tools

Теперь о файле "подкачки" (swop)

Файлы подкачки хранятся в папке

	/private/var/vm/

там же находится дамп оперативной памяти "спящего режима", который загружается при выходе из режима "сна". Посмотреть распределение виртуальной памяти можно командой 

	vm_stat

Но она не является необходимой если Вы используете Системный монитор.

Имена своп файлов имеют swapfile и его номер например: swapfile0, swapfile1. Их размер может колебаться. Посмотреть данные файлы в терминале:

	ls -lh /private/var/vm/swapfile* 

Отключить использование файлов подкачки можно следующими командами в программе терминал

	sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist

Внимание! Выполнение даннок команды, в случае недостатка оперативной памяти приведет к аварийному завешению системы!

 

Включить swop можно следующей командой из Terminal

	sudo launchctl load /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist

Удалить swop файлы

	sudo rm /private/var/vm/swapfile*
Интересную информацию о работе вашего Mac можно получить командой top
 
vm_stat -Получить информацию об использовании оперативной памяти