谷歌近日宣布,将从Android 17系统开始,引入一项更为严格的应用内存管理机制。这项新规旨在从根本上提升设备的整体稳定性和多任务体验,避免因单个应用的内存问题拖累整个系统。

新机制的核心是为每个应用程序设定明确的内存使用上限。一旦应用占用的内存超过为其设定的边界,Android系统将直接终止该进程,并且不会留下常规的崩溃堆栈信息。谷歌表示,此举是为了防止因应用内存泄漏或异常占用大量RAM,而导致系统界面卡顿、设备发热以及频繁杀后台等问题。
告别“连锁清理”,提升多任务体验
这一调整将改变Android系统此前主要依赖Low Memory Killer(LMK)机制进行内存回收的局面。在旧机制下,当系统整体内存紧张时,LMK会按进程优先级逐步终止后台和缓存进程。但对于持有较高优先级状态(如正在运行前台服务)同时内存不断膨胀的应用,LMK一开始不会优先处理它。这导致系统只能通过终止大量运行良好的缓存应用来回收内存,严重削弱了多任务体验,也让用户切回之前使用过的应用时不得不经历缓慢的冷启动过程,同时加剧了CPU负载和电量消耗。
Android 17希望通过提前限制单个应用的内存占用,来减少此类“连锁清理”现象。通过引入基于设备总内存的确定性内存边界,系统可以在单个应用引发系统级别的不稳定之前进行干预。
谷歌为开发者提供多项优化建议
为帮助开发者适应新规则,谷歌同步给出了多项优化建议。其中最重要的一项是全面启用R8字节码优化工具。R8可以压缩和混淆代码,删除未使用的资源与功能模块,从而减少应用运行时需要常驻内存的代码量。谷歌表示,英国数字银&行应用Monzo在启用完整R8优化后,应用无响应(ANR)发生率下降35%,冷启动表现提升30%,安装包体积缩小约9%。
在图片处理方面,谷歌强调位图(Bitmap)往往是Android应用中最主要的内存消耗。官方建议开发者使用Glide、Coil等图片加载框架,并通过图片缩放、裁剪优化、位图复用等方式降低内存占用。当图片不需要透明通道时,可优先采用RGB_565格式,其内存占用仅为默认ARGB_8888格式的一半。
针对内存泄漏问题,谷歌建议开发者利用Android Studio集成的LeakCanary分析工具及时发现并修复对象引用未释放等问题。常见泄漏场景包括Activity、Fragment、View生命周期结束后仍被持有引用,以及监听器、观察者或广播接收器未正确注销等。
强化应用主动释放与问题排查能力
与此同时,Android 17继续强化应用主动释放内存的能力。谷歌建议开发者在Activity、Fragment、Service或Application中实现onTrimMemory回调。当应用界面进入后台或进程成为系统回收候选对象时,主动清理图片缓存、视频缓冲区以及可重新构建的数据资源,以减少被系统终止的风险。
为了方便开发者排查线上问题,谷歌还进一步扩展了Android 15引入的ProfilingManager API。Android 17新增OOM(内存耗尽)和异常事件触发机制,允许应用在发生Out Of Memory错误或触及系统内存限制前自动生成堆转储(Heap Dump)文件,供开发者后续分析内存泄漏、异常对象占用以及资源管理问题。
据悉,在谷歌此前发布的Android 17 Beta 4测试版中,应用内存限制机制已经作为重点改进项目向开发者开放测试。随着Android 17正式版推进,该机制预计将成为系统层面的默认行为,开发者需要提前完成应用适配和内存优化工作,以避免因超出系统限制而被直接终止运行。
