很多人说苹果2GB运存就很流畅,而安卓机6GB还卡顿,到底为什么?

来源:奇客智能 2017年07月19日 08:18

奇客智能【GeekSmart】文|左远良

首先不能把iOS和安卓的内存直接拿来对比,首先要明白他们的后台机制是不一样的,对于运存RAM的依赖也不一样。

先说一下苹果ios的墓碑机制,也就是“伪后台”吧。

苹果iOS 4-iOS 8期间,iOS均采用这种后台机制。随着 iPhone的也用上更大内存,拥有更快闪存速度,于是在 iPhone 6S成功搭载 2GB内存后,新的机制出现了—暂缩机制。

什么意思呢?如果一个 App退出了。闲置了 10 min,它在活动时仍占用 RAM空间,不过会被压缩。一旦活动减缓,它就会被转储到内部存储中,一旦用户再使用这个 App,那么就立即调用转储文件,立即扩展内存空间给这个转储文件,程序完成运行。

而一旦超出预定时间,有后台需要的 App会自动压缩进内存,没有的将会被完全转储或者退出。而预定时间以内,这些打开的 App都会以打开顺序自动压缩进入内存,当内存空间将满的时候,从负载小的软件起开始转储,等打开时再加载入内存,同时压缩负载大软件,直至到极限,然后退出。(不转储)这个转储的过程比较快,大概耗时 0.1s~2s(根据设备性能以及 App大小决定)当转储文件一旦被删除以后,App内的已压缩内存就会被释放,同时重新打开这个 App,要求其恢复原有状态(若可以的话)这就是俗称的杀后台了。

值得一提的是,设备闲置过长时间,只会暂存打开的 App而已。另外,iPhone用的 NAND和协议都要比同期安卓机器好很多,包括内存频率。而且现在eMMC和 UFS差距还是比较大的,尤其是闪存门事件又引发了关注。

当然,安卓机现在的运存不断飙升,已经快赶上电脑的水准了,如努比亚Z17和一加5,都用上了8GB的运存。

因为Android的内存调度比 iOS要宽松,进程即便进入后台也有活跃的机会,这使得 Android成为了真正意义上的多任务操作系统,而 iOS对于一切后台应用都有严格的限制,超过允许的活跃时间后就会被冻结,不再分配 CPU时间。

另外,系统流畅度与内存没有直接关系,不是说内存大系统就流畅,安卓手机之所以在低内存时容易卡顿,更多的是因为进程由于内存不足被释放又按需重建的原因,国产应用又擅长链式启动,这种频繁释放内存然后又同时链式启动才是造成系统卡顿的真凶。而 iOS就压根不允许链式启动这件事发生,只有用户点击了 SpringBoard上的图标,相应的 app进程才会真正启动,这也就保证了在有限时间内,同时占用 CPU的进程有限。

Android由于系统架构的原因(不能说这种设计不好吧,个人觉得这样还是很灵活的,给开发者足够的想象空间),Service、BroadcastReceiver、Content Provider这几个组件允许被不同进程相互调用,这也给国产厂家钻空子的机会,假设一个 app同时调起了 5个其他 app的 Service,那么同时就会有 5个进程占用 CPU时间,这肯定会造成卡顿。要怪也不能怪系统设计,还是开发者(商)自己不自觉。

而为什么要用 8 GB内存呢,既然环境如此,越大的内存虽然效果不显著,但也不至于 make it worse,而且在数据上还能好看一些,再加上 RAM本身也不贵,所以很多厂商肯定就选择更大的内存了,尽管这确实没什么卵用。

最后敲黑板说重点,内存与流畅度无直接关系,有间接关系但原理不是很多人说的那样。

以上内容版权归奇客智能「GeekSmart」。奇客智能是媒体训练营新媒体团队运营,专注数码产品、人工智能、智能智造等领域的新媒体品牌,转载请联系授权。欢迎关注此号、在评论区留言吐槽。

相关推荐
最新文章