Заголовок может вам показаться странным, если вы не используете macOS, но если вы пользуетесь продуктами экосистемы Apple (особенно ноутбуками или iMac Retina 4K), то в процессе работы можете столкнуться с неприятной проблемой: все необходимые для работы инструменты никак не хотят помещаться в 16 Гб оперативной памяти, и система начинает периодически «тормозить» и использовать большое количество сжатой памяти и свопа.
В интернете есть много тривиальных статей, как можно уменьшить потребление памяти на macOS из серии «выключите ненужные программы, установите The Great Suspender для Google Chrome» и т.д. Если вы перепробовали эти советы и всё равно страдаете от недостатка памяти, то я бы хотел поделиться опытом, как лично я решаю эти проблемы.
Общие советы
Я обязан для начала рассказать про простые способы контролировать потребление памяти на macOS (этот совет годится и в Windows и Linux):
- Откройте «Мониторинг системы», отсортируйте приложения по памяти и перестаньте пользоваться приложениями, которые не нужны вам в данный момент
- Отсортируйте приложения по объему сжатой памяти — если вы найдете часто используемые приложения, то значит в вашей системе совсем не хватает объема ОЗУ
- Вынесите «тяжелые» процессы на отдельные сервера, если это возможно (например, компилируйте Android-приложения на отдельной машине)
Смена браузера
Вы удивитесь, но Google Chrome (и Safari) — не единственные существующие под macOS браузеры. Firefox тоже прекрасно работает, и является одним из очень немногих приложений, которые поддерживают 32-битный режим.
В теории, работа в 32-битном режиме может уменьшить потребление памяти до 2 раз, заодно ограничив браузер 4 Гб памяти сверху (я бы ограничил ещё сильнее, если бы была возможность). В реальности, конечно, разница не такая большая, но она вполне заметна. Ну и сам Firefox экономнее расходует память, в том числе потому, что у него всего 2 процесса — один процесс для UI и второй процесс для содержимого вкладок. Вероятнее всего, со временем это преимущество будет уменьшаться, но на момент написания статьи Firefox в 32-битном режиме потреблял примерно в 2 раза меньше памяти, чем Google Chrome, и отдавал память обратно системе намного охотнее, когда закрывались лишние вкладки.
Избавление от приложений на базе Electron
Если у вас есть приложения на базе Electron, например HipChat или Slack, я очень рекомендую избавиться от них в пользу отдельной браузерной вкладки, поскольку Electron это на самом деле Chromium, а он для поддержания своей работы требует огромные объемы оперативной памяти (500-700 Мб на старте).
Перевод приложений в Low Resolution Mode
Некоторые приложения (например, Telegram) могут потреблять очень много памяти для того, что они делают. Иногда это связано с разрешением экрана. На моем iMac Retina 4K один скриншот экрана будет занимать 4096×2304x3 = 28 Мегабайт оперативной памяти. Если используемый софт кеширует в памяти слишком много участков экрана, то перевод его в Low Resolution Mode (с потерей визуального качества, безусловно) может, в теории, уменьшить потребление памяти в 4 раза. Перевод Telegram в low-res режим снизил на моем компьютере его потребление памяти с 500 мб до 150 мб — разница в 3,3 раза!
Заключение
Эта статья получилась очень короткая, но лишь потому, что лично для меня все эти советы помогли полностью избавиться от «лагов» в работе моего компьютера, связанных с недостатком памяти. У меня всё равно периодически возникают процессы, у которых наблюдается некоторый объем сжатой памяти или даже свопа, но при этом это, обычно, background-демона, которые не влияют на user experience. Если у вас есть возможность поставить в свой компьютер больше 16 Гб памяти, то я бы рекомендовал это сделать, даже если в данный момент вам столько не нужно. На macOS, к сожалению, такая возможность есть только в случае iMac Retina 5K и Mac Pro, и последний явно не стоит своих денег.
Надеюсь, эта статья вам была полезна, буду рад комментариям.
Автор: Юрий Насретдинов