[Mac OS X] Освобождаем память

59

pic_0

В OS X используется следующее распределение оперативной памяти:

– Часть памяти резервируется под системные нужды (ядро, системные сервисы). Это так называемая Зарезервированная память (она же Wired);
– Часть памяти используется активными программами для своей работы. Это Активная память (Active);
– Часть памяти остается занятой данными тех приложений, работа которых недавно была завершена. Используется для быстрого повторного запуска этих приложений. Эту часть называют Неактивной памятью (Inactive)

Увидеть состояние этих частей памяти можно с помощью программы Мониторинг системы (ПрограммыУтилиты):

pic_1

При активной работе в системе, иногда случается так, что свободной памяти остается мало и система начинает освобождать Неактивную ее часть, т.е. OS X сама заботится об оптимальном использовании оперативной памяти.

Но если вы решили самостоятельно навести порядок в памяти, то и такой инструмент в системе найдется. Для удобства его использования, предлагаю написать небольшой скрипт, который вы сможете в любое время запускать и самостоятельно очищать оперативную память.

Приступим

Запустите приложение Редактор AppleScript (ПрограммыУтилиты). Затем, в открывшееся окно скопируйте этот текст:

display dialog "Освободить память?" buttons {"Отмена", "ОК"} with icon 2 with title "Освобождение памяти" default button 2
set buttonAnswer to the button returned of the result
if buttonAnswer is "ОК" then
say "Освобождение памяти. Подождите."
tell application "Terminal"
do shell script "purge"
quit
end tell
say "Выполнено!"
end if

Нажмите кнопку Компилировать в панели инструментов. Затем нажмите комбинацию клавиш Cmd+S и в диалоге сохранения выберите папку Программы, введите название, например, FreeMem, выберите формат файла – Программа, затем нажмите кнопку Сохранить. То есть все действия аналогичны тем, что описаны и показаны на картинках в этой статье.

Для удобства вытащите из папки Программы вашу новую утилиту FreeMem в Dock.

Это еще не все. Для работы скрипта нам нужно, чтобы в системе была установлена поддержка Преобразования текста в речь для русского языка. Проверить это можно тут:

pic_2

Должен быть выбран русский Голос системыMilena, как у меня на картинке. Если это не так, то там же выберите пункт Настроить и установите нужную нам поддержку:

pic_3

Все. Теперь можете запускать вашу новую утилиту. Проконтролировать эффективность ее работы можно все той же программой Мониторинг системы (ПрограммыУтилиты). Вот что получилось у меня:

pic_4

Сравните выделенные цифры на самой первой картинке и на этой.

Удачи!

59 комментариев

  1. 0
    Дмитрий

    Пригодится

  2. 0

    На двух и четырёх гигах очень нужна, а на восьми только, если Вы используете парралель, иначе смысла нету
    (отправлено из приложения AppleInsider.ru)

  3. 0

    А нафига огород городить? purge в терминале недостаточно?

    • 0
      Игорь Соловьев

      PavelS, Вы текст скрипта хоть посмотрели, прежде чем писать? 🙂

      • 0

        Игорь, А что там еще такого сверх естественного есть??!
        O_o

        • 0
          Игорь Соловьев

          Yury, Там Ваш purge и используется. 😉
          А если Вы о том, что Вам удобнее запустить Терминал, набрать purge, чем кликнуть по иконке в доке… То как говорится на вкус и цвет…
          В любом случае, я не понял Вашего первого поста. К чему он был? Показать всем, что знаете команду purge? 😉
          Так это детский сад натуральный. 😀

          • 0
            Сергей

            Игорь, Раз уж начали использовать терминал для всего этого хозяйства, тогда бы уж прописали /us/bin/purge (вроде он там) в crontab — тогда и не нужно все остальное с голосом и прочими приблудами.

            • 0
              Игорь Соловьев

              Сергей, Ой не могу, от любителей все и вся покритиковать…. 😀
              Не нужно Вам это, не делайте! Делайте как Вам лучше! Зачем Вы пытаетесь свое мнение навязывать? Да и кому? Мне? Мне вообще это пофиг, я по-другому с памятью разбираюсь.
              Статья для тех, кому не понятны Терминал и purge…
              Вам что, заняться нечем? Займитесь чем-нибудь более полезным, чем троллинг… 😀

  4. 0
    Евгений

    Утилита Memory Free 2 из AppStore не то же самое делает?

    • 0
      Игорь Соловьев

      Евгений, Не совсем. Она использует свой алгоритм (не такой эффективный как purge). А использование purge доступно в платной версии.
      Правда сам я именно ее и использую. Платную.
      Она безусловно — удобная штука. 🙂
      В любом случае — в этой рубрике только средства самой OS X. 😉

  5. 0
    Сергей

    Хорошая шутка для тех, кто не умеет набирать man purge 🙂
    Жаль, не 1 апреля написал, я бы посмеялся.

    • 0
      Игорь Соловьев

      Сергей, Большинству пользователей удобнее будет кликнуть мышкой по иконке, чем вспоминать какую-то команду.
      🙂
      Я конечено понимаю, что каждый знающий про команду purge так и норовит рассказать об этом всему миру, чтобы показать свою крутость… 😀
      Но, кстати, команда man purge покажет руководство на команду, а не зачистит память. 😉

  6. 0

    Наверное нужно если тормозит только. У меня 4 гига оперативки и все отлично быстро и без глюков. Хотя нагружаю его по полной довольно часто: и видео, и звукозапись в сибе и гараже, и в Xcode могу одновременно программировать. В такой ситуации падает только iTunes. Он, кстати, в последние годы вообще стал очень нагруженным и глюканутым.
    (отправлено из приложения AppleInsider.ru)

    • 0
      Игорь Соловьев

      Fadex, Да, айтюнс, параллелс, аймуви любят покушать прилично… Я даже на 8 гигах не так уж редко вижу свободной памяти 100-200 мбайт остается… 😉

    • 0

      Fadex, Прям аж любопытство разбирает. Как вам 4-ех гигов хватает, для того, как вы сами говорите:»…нагружаю его по полной…»?.
      Я периодически глазками стреляю в панель, чтобы посмотреть, а не сильно ли у меня убавилось памяти, при отлкюченном-то swap-е.
      Лишний раз убеждаюсь, что понятие «по полной», ну очень относительное. Я бы свои 16 с удовольствием нарастил…, да некуда втыкать уже, а люди с четырьмя гигами умудряются работать «по полной». Как так?
      Вспоминается поговорка: стою на асфальте в лыжи обутый, толи лыжи не едут, толи я…

      • 0

        Shashka, 16Gb?:) а какой у тебя Мак? У меня MBP 2011 late. 8 Gb иногда бывает недостаточно, а в мануале написано, что 8Gb это максимум.

        • 0
          Игорь Соловьев

          Alexander, В iMac можно и 32 впихнуть… 😉
          Если 8 гиговые модули найти…

          • 0
            Сергей

            Игорь, 8-гиговые дороговатые пока, почти 150 баксов. 4 штуки — 600$.
            http://xcom-shop.ru/kingston_kvr1333d3s98g_238415.html

          • 0

            Игорь, Это смотря в какой айМак. В 2008-го года только 4 гига можно максимум. Так и живём)

          • 0

            Игорь, Не вижу смысла в подобных телодвижениях. Нужна будет память — ось сама выгрузит неактивную.
            Приведённый способ видимо для параноиков, которые непременно хотят видеть зелёный сектор и только его.
            При правильной работе системы память задействована на всю катушку, в том числе и неактивная. Надо смотреть на пункт «Выгрузка страниц» — если там 0, то всё отлично; а вот если там какие-то огромные значения — значит надо апгрейдить память.

            • 0

              Серж, Как я хочу, чтобы вы были правы. И чтобы не значть, что такое swap, Active, Wired…, не апгрейдить память с 4-ех и до…
              Но я доверяю своим чувствам, я вижу и знаю как работает машина с одним объемом, с другим, с отключенным swap и т.д. Я вижу разницу. И она огромна. Ее не видит, ну наверно только по.уист (не примите как намек), которому без разницы, что и как. Я понимаю, на словах OS X такая умная, что хлебом не корми, но вот на деле..
              З.Ы. Нам же нечем заняться, вот мы и наращиваем обьем памяти.

        • 0

          Alexander, Alexander, основная машина у меня — это хак, с вот таким набором памяти: http://www.nix.ru/autocatalog/memory_modules_kingston/Kingston_HyperX_KHX1600C9D3K4_16GX_DDRIII_16Gb_4Gb_PC312800_CL9_126314.html
          Довольно простой набор, хоть и KHX-овой серии. Цена этого комплекта всего 100 долларов. Сравнительно маленькие деньги для того комфорта, который получаешь от работы.
          Жаль, что нет больше свободных слотов на мат. плате, поставил бы еще.

        • 0

          Alexander, Мануалам не всегда можно верить 🙂 У меня MBP late 2011 с 16Gb и все работает отлично! http://goo.gl/zZTk9

      • 0
        Игорь Соловьев

        Shashka, На верхней картинке у меня видно, что использовано 3,95 гига. На 4-х гигах уже начались бы тормоза… 🙂
        Так что «на полную катушку» при 4 гигах это видимо преувеличение… 😉

  7. 0
    Дмитрий :)

    Спасибо большое, я не сильный программист и для меня такие вот простые и полезные инструкции просто бальзам на душу 🙂

  8. 0

    Добре! 🙂
    Было бы интересней, если б в строку меню можно было бы вывести иконку какую-нибудь!

  9. 0

    Большое Спасибо, но мне не очень нравиться идея со скачиванием голоса, который занимает около 500мб, поэтому я слегка подправил ваш скрипт

    display dialog «Освободить память?» buttons {«Отмена», «ОК»} with icon 2 with title «Освобождение памяти» default button 2
    set buttonAnswer to the button returned of the result
    if buttonAnswer is «ОК» then
    display dialog «Освобождение памяти. Подождите.»
    tell application «Terminal»
    do shell script «purge»
    quit
    end tell
    display dialog «Выполнено!»
    end if

    • 0
      Игорь Соловьев

      maxmaro, Спасибо. Я действительно не подумал, что для кого-нибудь будет неудобным 500 метров скачать.
      Надо было два варианта скрипта сделать… 🙂

  10. 0

    У меня на 10.8 скрипт не выполняется, applescript крашится, странно.

  11. 0
    Сирожа

    А зачем это вообще делать? Ось и так задействует «синюю» память в случае необходимости. Зачем городить огород? Тем более это замедлит повторный запус программ

  12. 0

    Не вижу смысла в подобных телодвижениях. Нужна будет память — ось сама выгрузит неактивную.
    Приведённый способ видимо для параноиков, которые непременно хотят видеть зелёный сектор и только его.
    При правильной работе системы память задействована на всю катушку, в том числе и неактивная. Надо смотреть на пункт «Выгрузка страниц» — если там 0, то всё отлично; а вот если там какие-то огромные значения — значит надо апгрейдить память.

  13. 0
    мимошел

    блин чет дофига тролей и школоты маками пользуется.. раньше в нашем клубе ТАК никто не позволял себе разговаривать :((

  14. 0

    а если фразы на англ перевести, можно другой голос использовать?)

  15. 0
    Виктор

    Спасибо, очень полезная программа, сделал за минуту, все работает.
    Респект

  16. 0

    Здравствуйте. У меня не работает этот скприпт. Пишет: sh: purge: command not found. Еще я не нашел русского голоса у себя. У меня 10.6.8.

  17. 0

    u menya v otdele «rech'» imya alex i net opcii «nastroit'».. kak tak?

  18. 0

    я тупой пользователь. и не знаю что такое терминал … и знать не хочу. установил скрипт. очень круто. спасибо

  19. 0
    Юрий Полевой

    Уважаемый, Игорь Соловьев, спасибо за этот скрипт. Мне так он очень помогает при работе с виртуалкой (пользуюсь VMware Fusion), а то ни как не мог побороть постоянно растущую неактивную память… Единственная просьба — не могли бы вы составить такой же скрипт, но с автоматическим сбросом при наличии менее 100 МБ свободной памяти. Ну или хотя бы подсказать где подобный найти. Заранее благодарен за ответ!

  20. 0

    Здравствуйте! Хочу выразить благодарность за этот скрипт. Очень удобно. Все время пользовался. НО! Обновил систему до OS X Mavericks и теперь, к сожалению, данный скрипт не работает. Я как обычный юзер не представляю, что там нужно дописывать))) есть ли соображения по этому поводу? А то напряжно все время открывать терминал, вводить sudo purge, да еще пароль…

  21. 0
    Юрий Полевой

    Комментарий автора был удален…

  22. 0

    Так- то ничего сложного в добавлении суперюзера и нету))
    всем у кого Mavericks, надо вот эту строку
    do shell script «purge»
    дополнить, чтобы получилось вот так:
    do shell script » sudo purge» user name «Имя пользователя» password «Пароль»
    Соответственно, остаётся только ввести имя суперюзера и пароль)) и да, имя и пароль должны быть в кавычках, как и написано.

  23. 0

    извиняюсь, строка должна получиться вот такой do shell script «PURGE» password «Пароль текущего пользователя, из под которого запускается скрипт» with administrator privileges

  24. 0

    В маверикс команда purge заменена на sudo purge ЛУчше это учесть в скрипте
    Спасибо

  25. 0

    Хотя работает только с вариантом
    do shell script «purge» with administrator privileges

Авторизуйтесь Чтобы оставить комментарий