
Android 17 принудительно закроет приложения, использующие много ОЗУ
Google начала жёстче контролировать потребление оперативной памяти в Android 17. Новая система Memory Limiter уже используется на смартфонах Pixel, а в течение следующего года её начнут внедрять другие производители. Теперь ОС может сначала замедлить слишком прожорливое приложение, а если оно продолжит занимать память – принудительно завершить его процесс.
Причиной изменений Google называет не только плохо оптимизированные приложения. Компания отмечает, что из-за роста стоимости памяти производители новых устройств всё чаще сохраняют прежний объём ОЗУ или даже уменьшают его, тогда как требования приложений продолжают расти.
Как Android 17 ограничивает приложения
Memory Limiter работает на уровне Linux cgroup v2 и контролирует память отдельных процессов приложений. Причём ограничения действуют на все приложения в Android 17 независимо от того, под какую версию Android они изначально разрабатывались.
Система использует разные лимиты для приложения на экране и процессов, работающих в фоне. Последним разрешено занимать значительно меньше памяти.

При достижении мягкого лимита Android не закрывает приложение сразу. Сначала система начинает освобождать принадлежащую ему память: удаляет давно не использовавшиеся страницы, которые можно заново загрузить из файлов, а неактивные данные переносит в zRAM – область оперативной памяти, где информация хранится в сжатом виде.
Это позволяет продолжить работу приложения, однако сжатие и распаковка данных требуют дополнительных ресурсов процессора. В результате могут появиться подтормаживания интерфейса.
Если приложение продолжает увеличивать потребление памяти и исчерпывает доступный ему объём zRAM, новые выделения памяти начинают завершаться ошибкой, после чего Android может принудительно закрыть процесс.
Лимиты использования памяти Android 17
Google уже опубликовала стандартные ограничения для наиболее распространённых конфигураций смартфонов.
| ОЗУ смартфона | Приложение на экране | Фоновый процесс | Лимит zRAM |
|---|---|---|---|
| 4 ГБ | 2 ГБ | 1 ГБ | 1 ГБ |
| 6 ГБ | 4 ГБ | 2 ГБ | 2 ГБ |
| 8 ГБ | 5 ГБ | 3 ГБ | 3 ГБ |
| 12 ГБ | 8 ГБ | 4 ГБ | 4 ГБ |
| 16 ГБ | 10 ГБ | 5 ГБ | 5 ГБ |
Таким образом, Android выделяет видимому приложению примерно от половины до двух третей физической оперативной памяти устройства. Для фоновых процессов предусмотрено около четверти или трети ОЗУ.
При расчётах используется не заявленный производителем объём памяти, а доступный системе показатель MemTotal. Он обычно меньше физического объёма ОЗУ на 500 МБ – 2 ГБ и более, поскольку часть памяти резервируется для графики, модема, камеры, защищённой среды и других аппаратных компонентов.
Предустановленные приложения также будут закрываться
Memory Limiter следит практически за всеми обычными процессами приложений, включая предустановленное ПО производителя. Отдельного белого списка, позволяющего Samsung, Google или другим компаниям освободить собственные приложения от ограничений, система не предусматривает.
Исключением являются критические системные процессы Android, для которых ограничения памяти не применяются.
Также учитывается состояние приложения. Процесс с интерфейсом на экране получает повышенный лимит, тогда как фоновые службы и обработчики работают с более жёсткими ограничениями. Кэшированные процессы Android может замораживать и максимально освобождать занимаемую ими память.
Зачем вводят ограничения
Раньше одно приложение с утечкой памяти могло постепенно создавать давление на всю систему. Android приходилось активнее очищать память и закрывать другие нормально работающие фоновые приложения. В результате пользователь возвращался к ним и получал полноценный холодный запуск вместо мгновенного восстановления предыдущего состояния.

Дополнительная нагрузка на систему управления памятью также увеличивает загрузку процессора и энергопотребление и может приводить к рывкам интерфейса.
Memory Limiter меняет подход: Android пытается локализовать проблему внутри приложения, которое потребляет аномально много памяти, вместо того чтобы позволять ему ухудшать работу всей системы.
При этом Google утверждает, что подавляющее большинство обычных сессий приложений не должно столкнуться с ограничениями. В Android 17 пороги специально выбраны достаточно высокими и прежде всего рассчитаны на серьёзные утечки памяти и другие аномальные сценарии.
Разработчики узнают причины закрытия приложения
Для разработчиков Google добавила отдельные инструменты диагностики. Если процесс был остановлен Memory Limiter, Android сохранит причину завершения REASON_OTHER со строкой MemoryLimiter:AnonSwap.
Кроме того, систему можно заставить автоматически создавать дамп памяти при приближении к лимиту. В Android Vitals появились показатели использования обычной и swap-памяти, а Firebase Crashlytics 20.1.0 получил дополнительную диагностику ошибок нехватки памяти и завершений процессов Memory Limiter.
Разработчики также могут через ADB посмотреть текущие ограничения смартфона, временно отключить Memory Limiter или вручную установить определённый лимит для процесса во время тестирования.
На данный момент новая система начала распространяться со смартфонов Pixel. Google ожидает, что в течение ближайшего года её внедрит всё больше производителей Android-устройств с объёмом оперативной памяти от 4 до 16 ГБ и более.











