就在国内手机厂商携手推进“公平内存运行机制”之后,作为Android生态盟主的谷歌也出手了。日前,谷歌在Android开发者博客发布的博文中宣布,将继续加强Android生态系统的内存管理机制,系统将根据设备实际内存容量为应用设定可使用的上限,防止单个应用占用过多资源拖垮系统稳定性。

打开网易新闻 查看精彩图片

也就是说,Android 17会根据设备的内存规格为每个应用设定内存上限,在某个App超过阈值后,系统会先将App的部分数据压缩至压缩内存(zRAM),此时App仍可运行但会变慢。如果App的内存占用继续超限,系统则会升级惩罚,直接终止这个App的进程,阻断因单个App内存溢出引发的连锁反应。

其实从某种意义上来说,新的内存管理机制应该是Android 17最大的变化,也直接更改了Android内存管理的调度逻辑。虽然Android系统在设计上追求的是充分利用设备的物理内存,进而确保系统数据的访问性能,系统的可用内存越小,内存的利用率就更高、缓存中的数据就越多,数据访问的命中率就越高,从而让系统响应速度越快。

这一设计理念,就决定了Android系统对于后台进程的策略是尽量保留,直到可用内存告警。为了确保系统对内存的充分利用,谷歌为Android设计了一个名为Low Memory Killer(低内存杀手)的内存回收机制,也就是当系统发现内存低于警戒线时,会通过对进程的重要性进行评估,来决定关闭进程释放内存以确保系统流畅度。

打开网易新闻 查看精彩图片

按照谷歌给出的Android开发者手册,不需要执行任务的空闲App应主动释放资源。然而为了商业利益,大量第三方开发者选择了“死道友不死贫道”,无视谷歌的这个建议,反而是会尽可能保留大量缓存、服务,甚至其他后台任务。

事实上,以往Android的内存管理机制是“老实人吃亏”,谷歌在相关博客中就将这个现象称为"一个坏苹果毁掉整个多任务体验"。当Android生态陷入公地悲剧,手机厂商选择了一刀切,执行高强度杀后台策略,并且为了避免用户体验下降,诸如微信、QQ、微博、抖音、淘宝这类热门App进入了白名单。

由于不患寡而患不均,这就导致其他开发者自然会向谷歌投诉。所以为了安抚开发者,自从Android 14以来,杀后台策略开始被边缘化。好在手机的内存规格在同一时间也迎来大幅提升,12GB乃至16GB内存逐步成为标配,算得上是“用发展的办法解决发展中的问题”。

打开网易新闻 查看精彩图片

然而这一轮AI潮虹吸存储芯片产能,导致Android手机已经没办法继续用增大设备内存的方式来解决问题。对此谷歌的做法是“学苹果”,对单个App的内存占用执行硬性限制。当然,谷歌的做法没有苹果那么霸道,并不会直接关闭超限App,而是加入了zRAM作为缓冲。

zRAM其实是Linux 3.14内核版本加入的一个功能,可以将zRAM理解为内存的缓冲池,类似Windows的虚拟内存。系统会预先将部分物理内存划出来当成zRAM块设备,然后把不常用的内存数据通过压缩后存放在zRAM里,等到用到的时候,再把数据解压出来。

但谷歌对Android 17的zRAM进行了改良,它不会占用物理内存。谷歌在这里用了一个妙招,系统会从闪存里划出2GB至4GB当作虚拟内存,这是由于顺序读取速度达到2279.9MB/s的UFS 3.0闪存大规模使用,更快的UFS 4.0在中高端产品中已经普及,压缩‑解压的过程不会慢到用户无法接受。

打开网易新闻 查看精彩图片

从某种意义上来说,Android 17新的内存管理机制,是谷歌从国内手机厂商的虚拟内存扩展、内存扩容技术中汲取的灵感。当然,Android 17新的内存管理机制并不是毫无代价,由于数据的压缩、解压需要CPU执行相应算法,因此会略微增加处理器功耗,所以手机的续航能力相应会有所下降。

不过对于小内存的机型来说,续航反而是相对更加廉价的东西,内存才是真金白银。只能说,这一次谷歌终于要救入门机于水火之中了。

【本文图片来自网络】