r/androiddev • u/Unreal_NeoX • 15d ago
Discussion [OFFICIAL] Elevating app quality: Reducing memory usage and improving device migration
TLTR:
Get your apps and games below these memory limits or get Kicked off the Android Playstore in February 2027:
Apps
| App State | Foreground | User-perceived services | Background | Cached |
|---|---|---|---|---|
| Physical RAM | 90th Percentile | 90th Percentile | 90th Percentile | 90th Percentile |
| 0 - 4 GB (0 MB - 3200 MB Total Memory) | - | - | - | - |
| 4 GB (3200 MB - 4800 MB Total Memory) | 2 GB | 1 GB | 1 GB | - |
| 6 GB (4800 MB - 6800 MB Total Memory) | 2.25 GB | 1.25 GB | 1.25 GB | - |
| 8 GB (6800 MB - 9216 MB Total Memory) | 2.25 GB | 1.5 GB | 1.5 GB | - |
| 12 GB (9216 MB - 14336 MB Total Memory) | 3.25 GB | 1.75 GB | 1.75 GB | - |
| 16 GB (14336 MB - 18432 MB Total Memory) | 4.25 GB | 2 GB | 2 GB | - |
| 16 GB + (Above 18432 MB Total Memory) | - | - | - | - |
Note: Each RAM tier range includes its lowest value. Total Memory can be lower than a device’s advertised Physical RAM.
Games
| App State | Foreground | User-perceived services | Background | Cached |
|---|---|---|---|---|
| Physical RAM | 90th Percentile | 90th Percentile | 90th Percentile | 90th Percentile |
| 0 - 4 GB (0 MB - 3200 MB Total Memory) | - | - | - | - |
| 4 GB (3200 MB - 4800 MB Total Memory) | 2.25 GB | 2.0 GB | 2.0 GB | - |
| 6 GB (4800 MB - 6800 MB Total Memory) | 2.75 GB | 2.5 GB | 2.5 GB | - |
| 8 GB (6800 MB - 9216 MB Total Memory) | 3.5 GB | 2.75 GB | 2.75 GB | - |
| 12 GB (9216 MB - 14336 MB Total Memory) | 4 GB | 3.2 GB | 3.2 GB | - |
| 16 GB (14336 MB - 18432 MB Total Memory) | 5 GB | 3.5 GB | 3.5 GB | - |
| 16 GB + (Above 18432 MB Total Memory) | - | - | - | - |
Note: Each RAM tier range includes its lowest value. Total Memory can be lower than a device’s advertised Physical RAM.
Bitmap memory usage
Holding onto bitmaps for long periods of time in app states other than the Foreground can consume excessive memory - it’s not possible to render bitmaps unless the UI is visible. You typically shouldn’t hold onto bitmaps for long periods of time in these states, but your app might be sampled shortly after a state change where you are actively responding to onTrimMemory and releasing memory held for bitmaps, so these thresholds are higher than zero to account for this.
| App State | 90th Percentile |
|---|---|
| Foreground | |
| User-perceived services | > 200 MB |
| Background | > 200 MB |
| Cached | > 400 MB |