Сегодня поговорим оперативной памяти в устройствах от Apple и ответим почему так и почему другие производители ставят больше.
Как вы наверное заметили на дворе у нас 2020 год а производители все так же гоняться за большими цифрами. Оперативная память не исключение. Сейчас все топовые производители взяли за основу пихать даже в среднебюджетный сегмент 8 Гб оперативной памяти, но когда речь идет о флагманах цифры растут и колебаться от 12 до 16. Вроде все логично. Чем больше оперативной памяти, тем больше процессов может оставаться в фоне. Но не у Apple. Линейка iPhone 11 показывает следующие результаты:
- iPhone 11 - 4 Гб
- iPhone 11 Pro - 4 Гб
- iPhone 11 Pro Max - 6 Гб
Кто то скажет что в 2020 году на это даже смешно со стороны посмотреть, не то что бы взять в руки. Но давайте немного углубимся и ответим почему Apple очень неспешно поднимаем объем оперативной памяти в своих телефонах.
Немного теории
Оперативная память (англ. Random Access Memory, RAM, память с произвольным доступом) или оперативное запоминающее устройство (ОЗУ) — энергозависимая часть системы памяти, в которой во время работы хранится выполняемый машинный код (программы), а также входные, выходные и промежуточные данные, обрабатываемые процессором.
Оперативной памяти никогда не бывает много. Сразу после перезагрузки Android телефона часто занято около 2 Гб RAM. Это системные приложения, оболочка, Google сервисы, сервисы распознавания лица, сканер отпечатков пальцев, бэкапы, сервис контактов и многое другое
К примеру при одновременном запуске iPhone 11 Pro, OnePlus 8 Pro и Pixel 4 то у всех телефонов занято по 2 Гб оперативной памяти. Но как же быть если у iPhone осталось только 2 Гб а у OnePlus 8 Pro целых 10 Гб?
Кто-то ответи что магия Apple в том что они держат связь с разработчиками и это позволяет оптимизировать приложения для минимизации потребления ресурсов. Не верно! Вот наглядный пример:
Как видим в исключительных случаях Android потребляет даже меньше, но по итогу все почти одинаково.
Оптимизация.
Все просто. Вся магия кроется в оптимизации самой iOS и ёё взаимодействию с оперативной памятью. Если брать в общем то и в Android и в iOS планировщик памяти работает одинаково. Принцип его работы до безобразия простой. При открытии приложения и нехватке оперативной памяти, планировщик принимает решение забрать её (оперативную память) у другого открытого приложение, тем самым его закрыть и отдать память на новую задачу. Но что делать если оба приложения нужны работоспособными?
И Android и iOS умеют сжимать приложения которые открыты в оперативной памяти освобождаю при нужде до 50% памяти.
Но Apple придумала свой подход и решение этой проблемы. Они решили делить оперативную память на отдельные участки, блоки по 16 Кб. В свою очередь эти блоки можно поделить на чистые и грязные.
Чистая оперативная память - это та часть оперативной памяти которая не нужна приложению для работы в фоновом режим и без которой приложения можно оставить в общей оперативной памяти.
Грязная оперативная память - часть данных без которого приложение не может функционировать в фоном режиме и содержит критически важные компоненты приложения.
Сам процес освобождения оперативной памяти в iOS имеет такую последовательность:
1. Планировщик делит оперативную память приложения на чистую и грязную.
2. После этого чистую память он выгружает из системы оставляя только грязную.
3. После того как большая часть выгрузилась он сжимает грязную память до минимального предела.
Если брать в общем и на примере инстаграм то таким путем планировщик памяти на iOS из 300 Мб сжимает приложение в фоне до 20 Мб. Круто не правда ли?
Производители Android устройств решили не заморачиваться а просто увеличить общий объем оперативной памяти. Проблема в том чо оперативная память энергозатратная и расходует аккумулятор девайся.