
- MobiDevices.com
- Софт
- Android 17 примусово закриє додатки, що використовують багато оперативної пам’яті
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 ГБ і більше.











