For developers · Checked 1 October 2026

Android 17 app memory limits: detect, test and stay under them

Short answer: Android 17 introduces per-app memory limits based on the device’s total RAM, starting with Pixel devices. Over the coming year more manufacturers will apply them across devices from 4GB to 16GB+. An app that goes over is first pushed into compressed zRAM, which costs CPU and causes jank, and if it keeps growing it is terminated. Google expects minimal impact on most sessions; the limits target leaks and outliers.

Tools for memory limits

From Android 17 behavior changes and the Android Developers Blog, read 1 October 2026.

GoalToolWhat to look for
Was a session killed by the limit?ApplicationExitInfo.getDescription()REASON_OTHER with “MemoryLimiter:AnonSwap”
Capture a heap dump at the limitTrigger-based profilingTRIGGER_TYPE_ANOMALY
Test locallyadb shell am memory-limiterignore, manual, status
See memory across your usersAndroid vitals in Play ConsoleMemory Usage (anonymous RSS + swap), Bitmap Memory Usage
Track kills and OOMs in the fieldFirebase Crashlytics 20.1.0Memory limiter exits with debug data
Collect heap dumps from productionProfilingManager (Android 15+)TRIGGER_TYPE_OOM, TRIGGER_TYPE_ANOMALY

What happens when an app exceeds its limit

The limit applies to all apps on devices that impose it, not only to apps targeting Android 17. When your app reaches its budget, the system moves its pages into zRAM, compressed memory; compressing and decompressing adds CPU work you will see as UI jank. If usage keeps rising past the zRAM threshold, the process is killed. Google does not publish the limit values; they depend on the device’s RAM.

Testing with adb

On a device that imposes limits, adb shell am memory-limiter status shows the current limits for visible and non-visible processes. am memory-limiter manual <pid> <MB> forces a limit on one process, for example 30 MB, to reproduce a kill, max removes all limits on it and none restores the default. am memory-limiter ignore <uid>|all|none turns enforcement off or back on. These commands do nothing on devices without memory limits.

Why it matters for your store listing

Memory kills look like crashes and restarts to users, and Google Play shows Android vitals such as memory usage in Play Console. Poor technical quality can limit an app’s visibility on Google Play, see Android vitals and Play visibility. The same device-coverage theme runs through 16 KB page size support.

Where Censuus fits

A lean app keeps the users you win; being found brings them. Censuus ranks apps by the visits they draw, and adding your app is free on the List my app form. Placement comes from traffic and sponsorship: apps climb on the visits they draw, and a sponsor can pay to rise higher.

Frequently asked questions

Does Android 17 limit how much memory an app can use?

Yes. Android 17 introduces per-app memory limits based on the device’s total RAM, starting on Pixel devices, with more manufacturers adopting them over the coming year.

What happens if my app exceeds the memory limit?

The system first swaps its pages into zRAM, which can cause jank, and terminates the process if memory keeps growing.

How do I know my app was killed by the memory limit?

Call getDescription() on ApplicationExitInfo. The exit reason is REASON_OTHER and the description contains “MemoryLimiter:AnonSwap”.

How can I test memory limits?

Use adb shell am memory-limiter with status, manual to set a limit in MB on a process, or ignore to turn enforcement off, on a device that imposes limits.

What is the memory limit per app on Android 17?

Google does not publish fixed values; limits depend on the device’s total RAM. Check the current limits on a device with am memory-limiter status.

Guides for app developers

Put your app in the ranking

Censuus ranks apps by the visits they draw and by sponsorship, no bots. Listing is free; sponsorship raises placement.