最近万众期待的苹果更新了iOS13.2系统,本以为带来超速体验,谁知道,微信聊着聊着,接个电话,微信挂了。哦呀发现其他app或者游戏切换后台,也出现同样情况,挂了。小弟君也是喜欢折腾的人,在iPhone数据分析里找到对应挂掉resource日志文件,发现如下:
是wakeups超过iOS对后台单进程的限制了。哦呀,为什么呢,之前iOS11、iOS12都木问题。小弟君进一步探秘,浏览挖掘各种信息,原来是iOS13.2系统对内存回收机制做了"改进"。这里会提到两个内存概念footprint和realmemory。footprint表示进程真正使用了多少内存,realmemory表示进程使用了多少物理内存(这是系统动态调度的,剩余内存紧张时,系统会实时优化,比如你游戏或者app切换后台后再切换回来,你会发现realmemory减少了好多好多,这是为什么?请自行查阅文档),这里很多人可能有疑问,这俩个概念有啥区别,别慌,还有一个compress压缩内存(类似android平台swap内存,这块不明白,请自行查阅文档),footprint=realmemory+compress压缩内存。正是由于iOS13.2处理compress压缩内存时候,导致wakeups上升,刚好触发wakeups limit机制。iOS13.2毫不犹豫的kill。当然苹果应该早知道这个问题,相信13.3版本