百姓大小事,一呼百应!

百姓网 | 百姓知道

电子产品

为什么苹果手机的内存才 2GB,而安卓手机要飙到 6GB?

iPhone 7 的内存才 2GB,最新的小米 6 都到 6GB 了,而且 6GB 的内存应该比 2GB 的内存还要贵几百块钱吧?不是说安卓和 iOS 一样流畅吗?不明白为什么要配这么大的内存?

2 个回答

  • 张小凡 | 2017-10-12 10:37:02

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

    另外,系统流畅度与内存没有直接关系,不是说内存大系统就流畅,安卓手机之所以在低内存时容易卡顿,更多的是因为进程由于内存不足被释放又按需重建的原因,国产应用又擅长链式启动,这种频繁内存然后又同时链式启动才是系统卡顿的真凶。而 iOS 就压根不允许链式启动这件事发生,只有用户点击了 SpringBoard 上的图标,相应的 app 进程才会真正启动,这也就保证了在有限时间内,同时占用 CPU 的进程有限。Android 由于系统架构的原因(不能说这种设计不好吧,个人觉得这样还是很灵活的,给开发者足够的想象空间),Service、BroadcastReceiver、Content Provider 这几个组件允许被不同进程相互调用,这也给国产厂家钻空子的机会,假设一个 app 同时调起了 5 个其他 app 的 Service,那么同时就会有 5 个进程占用 CPU 时间,这肯定会造成卡顿。要怪也不能怪系统设计,还是开发者(商)自己不自觉。

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

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

    本问答由张小凡提供

  • 张小凡 | 2017-10-12 10:24:03

    说一下墓碑机制,也就是“伪后台”吧。
    iOS 4-iOS 8 期间,iOS 均采用这种后台机制。
    随着 iPhone 的更大内存和闪存速度,于是在 iPhone 6S 成功搭载 2GB 内存后,新的机制出现了—暂缩机制。
    什么意思呢?
    一个 App 退出了。闲置了 10 min。
    它在活动时仍占用 RAM 空间,不过被压缩。一旦活动减缓,它就会被转储到内部存储中,一旦用户再使用这个 App,那么就立即调用转储文件,立即扩展内存空间给这个转储文件,程序完成运行。
    一旦超出预定时间,有后台需要的 App 会自动压缩进内存,没有的将会被完全转储或者退出。
    而预定时间以内,这些打开的 App 都会以打开顺序自动压缩进入内存,当内存空间将满的时候,从负载小的软件起开始转储,等打开时再加载入内存,同时压缩负载大软件,直至到极限,然后退出。(不转储)
    这个转储的过程比较快,大概耗时 0.1s~2s(根据设备性能以及 App 大小决定)
    当转储文件一旦被删除以后,App 内的已压缩内存就会被释放,同时重新打开这个 App,要求其恢复原有状态(若可以的话)这就是俗称的杀后台了。
    当然,设备闲置过长时间,只会暂存打开的 App 而已。
    哪位 Developer 有 iOS System Memory Dialog Manual 也可以分享,我这里是按照 macOS Memory Manual(2016)里的关于 iOS 互通性的附注描述的。
    还有,iPhone 用的 NAND 和协议都要比同期安卓机器好很多,包括内存频率。NVMe 和 UFS 差距还是比较大的。

    本问答由张小凡提供

* 本站部分内容来源自网络,仅作分享之用,侵删。