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 差距还是比较大的。本问答由张小凡提供
更多
- 国通星驿pos机人工服务电话是多少?
- 99
- 3
- 星通宝pos机24小时客服热线是什么?
- 63
- 3
- 汇付刷pos机全天24小时热线是什么?
- 12
- 3
- 鑫一付pos机24小时服务热线是什么?
- 62
- 3
- 乐刷pos机售后客服电话是多少?
- 45
- 3
- 金付通pos机24小时人工服务热线是多少?
- 96
- 3
- 合利宝pos机人工客服热线是多少?
- 80
- 3
- 星通宝pos机24小时客服热线是什么?
- 90
- 3
- 卡友pos机24小时人工服务电话是多少?
- 83
- 3
- 金小宝pos机售后服务热线是什么?
- 35
- 3