最近万众期待的苹果更新了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版本的时候会优化内存回收机制。
我们自己开发程序有木有可能被kill呢,小弟君百思寻解惶恐中寻找测试工具,冥冥中发现腾讯刚好发布了PerfDog"狗"的工具,说是全移动平台性能测试分析工具。惶恐中拿来验证,果然有wakeups。
大大的吃了一口"丸子",我们app切换后台wakeups平均是48,远小于wakeups limit。踏踏实实的吃了一个定心丸。哦呀,忘记吃早餐了,心情大好,下楼去,准备来个武汉热干面再加个蛋。感谢腾讯的狗工具,让我无烦忧。
看了下PerfDog性能狗工具简介--移动全平台iOS/Android性能测试、分析工具平台。快速定位分析性能问题,提升APP应用及游戏性能和品质。手机无需ROOT/越狱,手机硬件、游戏及应用APP也无需做任何修改,极简化即插即用。
顺便用了一下工具其他功能,jank卡顿,内存等功能,真心好用。强烈推荐。