Мы часто смеёмся над Apple, которая недодаёт оперативной памяти своим девайсам. Но давайте посмотрим фактам в глаза: даже старенький iPhone 6 с гигабайтом оперативки часто работает лучше, чем Android с двумя или даже тремя гигабайтами (ситуацию с iOS 11 пока в расчёт не берём, скоро криворукие программисты Apple всё починят). Почему же так получается, что устройства на iOS жрут меньше оперативной памяти, и как можно помочь своему Android-смартфону? Давайте разбираться, но сначала важный дисклеймер:
Это видео не реклама какого-нибудь «чудесного» таск-киллера. Наоборот, в рамках этого материала я объясню, почему эти программы чаще вредят, чем помогают. Не волнуйтесь, ничего устанавливать не придётся, будем просто разбираться в устройстве Android.
Во многом, Android не работает как iOS из-за разных принципов работы этих систем. Apple развивает операционку на собственном закрытом программном ядре XNU где контролирует каждую строчку кода. А Google сделала Android открытой, на основе Linux, и качество кода там естественно хуже. К тому же каждый Android-вендор что-то подпиливает под себя, и это тоже тормозит систему. Ну и не будем забывать, что в Android приложения запускаются в виртуальной машине Java, которая тянет много ресурсов системы.
Это не значит, что Андроид «хуже». Это просто другой подход со своими достоинствами и недостатками. В чём-то Android лучше, в чём-то хуже iOS. Важно другое: понимая, как работает наш зелёный робот, мы можем помочь ему функционировать быстрее или хотя бы меньше психовать при неизбежных тормозах.
Одной из проблем использования Java в Android является сборщик мусора Garbage collector. Эта полезная, на самом деле, утилита проверяет оперативную память и удаляет из неё уже ненужные объекты. Иногда это требует много ресурсов. Когда вы закрываете приложение в диспетчере задач, оперативка освобождается не мгновенно, а строго после того, как закончит работу Garbage collector. Пока идёт уборка, смартфон может тормозить.
В лагах часто виноваты криворукие программисты, которые не понимают принципов работы мусорщика. Если программа бесконечно плодит новые объекты, например, во время обновления пользовательского интерфейса, сборщик мусора вынужден постоянно их удалять.
Ещё бывает, что ссылки на старые и неактивные объекты в программе не освобождаются, и Garbage Collector не может их удалить. Неудаляемые объекты накапливаются в памяти, пока не забивают всё, отчего приложения начинают вылетать ну просто в любой момент. Это называется «утечкой памяти» и случается в любых операционках, в том числе и в Андроид. Даже лёгкая по системным требованиям игра или программа с плохо написанным кодом может подвесить смартфон. Вот почему полезно иногда перезагружать смартфон. Ещё всегда смотрите, какая программа сколько ресурсов потребляет. Если она жрёт слишком много, найдите альтернативу.
В операционках Apple, кстати, мусорщик не используется, его заменили более продвинутой технологией и принудительно заставили всех разработчиков переписать свои программы под другой инструмент.
Другая серьёзная проблема касается того, как реализована работа приложений в Android. Почти у каждой программы есть невидимые фоновые процессы, которые называются «Сервисы». Сервисы висят в оперативке, нагружают процессор и жрут аккумулятор. Сервисы бывают полезные, вроде мониторинга новых сообщений у всех мессенджеров. А бывают и не очень. Например, приложения карт или служб такси могут обращаться к GPS даже когда телефон просто лежит в кармане. Зачем? «Просто так». Разработчик посчитал, что ему будет так удобнее, а пользователь как-нибудь перетерпит микролаги и повышенный расход батареи.
В отличии от Apple, которая жестко наказывает разработчиков за такие косяки, Google только даёт общие рекомендации. Потому-то многие приложения из Google Play и жрут слишком много ресурсов. Но есть и хорошие новости: Google это наконец-то надоело, и в восьмой версии Андроид фоновые процессы привели в порядок.
Но до восьмого Android ещё далеко, а универсальный совет есть уже сейчас: если больше не пользуетесь какими-то установленными программами или играми, сразу всё удаляйте. Вы можете не запускать приложение, но его сервисы всё равно будут сидеть в оперативке и тормозить систему.
А все эти программы таск-киллеры, как правило, написано так криво, что плодят собственных сервисов больше, чем удаляют чужого барахла. Поэтому я ими не пользуюсь, и вам не советую. Лучше получить Root и удалить ненужные предустановленные программы. Чем их меньше, тем меньше барахла в памяти.
Ещё приложения в Андроид любят проверять состояние системы с помощью функции BroadcastReceiver. Когда мы звоним, разблокируем экран, подключаемся к Wi-Fi — куча программ получают об этом сообщение и одновременно начинают что-то делать. Соответственно, ваш смартфон начинает дико тупить.
В Android 8.0 Google наконец-то запретила приложениям лезть во всё подряд и сильно оптимизировала этот механизм. Так что ждите апдейта на свои смартфоны, он реально того стоит.
Автоматическая выгрузка запущенных приложений из кеша, кстати, тоже не всегда спасает от переполнения памяти. Потому что система будет убивать то, что захочется ей, а не нужно вам.
Чистите кеш запущенных приложений сами
Следите за тем, что установлено в вашем смартфоне, всегда удаляйте ненужное.
Изучайте, какие разрешения просит каждая программа и сколько ресурсов жрёт
Перезагружайтесь хотя бы раз в неделю.
Я рад тому, что Гугл активно работает над тем, чтобы в будущем Андроид тормозил куча меньше, и в система была надёжная «защита от дурака», которая не даст приложениям сожрать всю оперативку. Вендоры тоже молодцы, раз перестали жадничать, и сейчас даже в бюджетных смартфонах спокойно можно встретить три или четыре гигабайта оперативки. Поэтому в следующем году всё у Андроид будет хорошо, а на сегодня… На сегодня у вас есть этот простой материал.