Android手机内存都往3GB上奔了,为啥iPhone 6依然只有1GB,却还是那么流畅?

 绝大部分数码设备都具备内存模块,为了让用户快速获得更快的访问速度,这种硬件是必需品。也正因为如此,Android设备才一而再、再而三地提高运存容量,目前主流的甚至已经达到了3GB。那有人就问了,iPhone 6为啥还敢坚持1GB运存?关键是,1GB居然还不卡?
这个问题说简单也简单,说复杂也很复杂。有人该回答了:“是苹果优化好呗!”说苹果好,里面本身就带着几分“Android呵呵”的意思。而事实似乎并非如此。iOS设备采取了与Android不同的内存垃圾回收机制,因此两者对运存容量的需求才有了很大的不同。

苹果是如何“收垃圾”的?

不管搭载的iOS还是Android,设备的运行内存都是有限的。在你开了一大堆应用程序,快要把内存占满的时候,为了维持正常运行,iOS和Android都会Kill掉一些后台进程,这个行为也称为“垃圾回收机制”。

但需要注意的是,iOS和Android“收垃圾”的方式不甚相同。iOS会依次把最老的应用直接关闭掉,所以很多朋友在切换到很老的后台App时会发现,它们都会从标题界面重新启动。

相比之下,Android的胆子则要小得多,它不会直接关掉App,而是筛选出其中的一些无用对象,率先把它们Kill掉,从而释放部分内存。但只要你不手动关,这些后台程序都不会自动消失。所以就算你今天上午只和基友聊了一句天,晚上再从后台调出微信,画面也肯定还停留在和他的那句基情对白上。

因此,苹果设备就算只有1GB运行内存,你正在用的App也绝对不会卡,而Android后台程序不会自动被关闭,需要提供更多的内存(2GB、3GB甚至更多)才能保证系统流畅运行。

内存需求小不是苹果牛掰的意思

虽然1GB用着也很舒坦,但说“苹果优化好”似乎不太准确,因为iOS和Android的垃圾处理方法并不是一个高端、一个土鳖,而是各有利弊。

iOS会无差别地关掉老应用,这意味着如果你正在玩一个大型游戏,那么可能微信、微博、QQ这些软件就全都被关掉了。你若想切换回这些软件,就要经历一个相当闹心的启动过程。朋友圈发完了、微博也玩够了,这回天下该太平了吧?等等,但愿你的游戏还能回到刚才暂停的位置……

另外一个比较闹心的场景就是你在Safari浏览器里开了N个标签,1GB运存承受不住那么多的内容,于是非常自觉地把最老的几个网页给挂起了。如果那几个页面刚好是你填了一半的付款界面或者是写了一半的文章,那么……

那Android又是怎么坑爹的呢?这个就不用我多说了,想必用家们都深有感触:切换界面会卡、接电话会卡、解锁会卡,连看个照片都得等半天。

但是,Android的大内存也有得天独厚的好处,那就是不管你想开什么后台应用,它们都会把你上次干半截的事情完整地带到前台,不会连个招呼都不打就关了它们。尤其目前市面上具备3GB运行内存的Android手机,它们既能够保证大量应用同时运行,也能保持整个系统处在一个比较流畅的状态,整体的体验也还是可以的(开好几十个应用不关的除外)。

所以,iOS的“霸道型小内存”和Android的“人文关怀型大内存”其实都是各有利弊的,并不是简单的一个比另一个好的关系。

运存那么小,你以为苹果真的很满足?

苹果在iPhone 6和6 Plus上保持1GB运行内存,不单单是因为用起来不卡,其实也基于以下一些问题进行了考量:

内存耗电:更多的内存会消耗更多的电能,iPhone 6内存仅1GB,而且采用了LPDDR3低电压版模块,节能效果相当可观;

成本问题:升级到2GB或者更高,单台手机的制造成本并不会题号多少,但是对于一个出货量动辄好几千万的产品来说,那算下来可得损失不少钱呢!

用户需求问题:虽然存在着一些略显坑爹的关后台问题,但是果粉们早就习惯了,就算加大内存容量,整体体验的提升也不见得多明显。对于追求各方面性能均衡的苹果来说,单个指标不突出不算是缺憾。

这里面就再不展开了,再说估计这期《产品家》就没法在iPhone的后台中存活了。其实说到底,在理想状态下,苹果也非常想让内存更大一些,毕竟用户运行多任务的时候,谁都希望能多开几个应用。苹果也意识到随着用户需求的提高,内存问题势必变得愈加尖锐,他们已然开始行动了:iPad Air 2升级到了2GB内存,这样一来,相信下一代的iPhone离大运存也不会太远了。

PS:iOS设备都2GB了,估计Android手机该往4GB上奔了……

iPhone 6 为何坚持1GB内存?的更多相关文章

  1. iPhone应用中如何避免内存泄露?

    如何有效控制iPhone内存管理的对象的所有权与引用计数和以及iPhone内存的自动释放与便捷方法.本文将介绍在iPhone应用中如何避免内存泄露.想了解“在iPhone应用中如何避免内存泄露”就必须 ...

  2. [转帖]论iPhone处理器十年进化史

    论iPhone处理器十年进化史 导读: 今天,苹果发布了最新一代的iPhone,作为新一代的旗舰,新手机的功能承载了苹果对未来的希望和消费者的期待.但从我们半导体人看来更关注的是内部技术的演变,尤其是 ...

  3. powershell中使用超大内存对象

    powershell中使用超大内存对象 简单介绍了powershell中超大内存对象的用途,开启powershell超大内存对象的办法. powershell 传教士 原创文章 2016-12-31 ...

  4. 图解VMware内存机制

    在写<VMware内存机制初探>之后,原本是计划写一篇<VMware内存机制再探>的,讲一讲VMware内存机制中的另外几个重要内容,比如透明内存共享(TPS, Transpa ...

  5. S5PV210的内存分配研究分析

    S5PV210内存一般会使用SDRAM和DDR2 (DDR SDRAM),SDRAM的uboot启动网络已经有很多资料的,对于DDR2还有有很多疑惑,如果有错误的地方,请大家一定指出,醍醐灌顶,不胜感 ...

  6. 获取iOS设备的内存状况(转)

    转载自:http://mobile.51cto.com/iphone-285371.htm   iPhone这类移动设备内存有限,而又不能使用交换区,为了不至于导致内存不足而引起运行效率降低或应用崩溃 ...

  7. 美国VPS推荐1GB 50GB可以win

    今天向大家推荐一款vps,1GB内存 50G硬盘 8M带宽 不限制流量,并且可以安装windows,年付才290元. 购买链接:http://www.jinbaoidc.com/page.aspx?c ...

  8. 修改win7注册表发挥大容量内存优势

    现在请打开注册表编辑器,找到[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control \Session Manager\MomoryManagement ...

  9. Spark内存管理-UnifiedMemoryManager和StaticMemoryManager

    在Spark-1.6.0中,引入了一个新的参数spark.memory.userLegacyMode(默认值为false),表示不使用Spark-1.6.0之前的内存管理机制,而是使用1.6.0中引入 ...

随机推荐

  1. sheelエラー、オブジェクトを解析中にエラーが発生しました。

  2. zend framework virtualhost设置方法

    Phpunit 的用法 php phpunit.phar 就可以运行phpunit了 修改本地域名vhost F:\Tools\wamp\bin\apache\apache2.4.9\conf\ext ...

  3. 解决apache启动问题:httpd: Could not reliably determine the server's fully

    httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for Se ...

  4. C++静态库与动态库(简介)

    C++静态库与动态库 这次分享的宗旨是——让大家学会创建与使用静态库.动态库,知道静态库与动态库的区别,知道使用的时候如何选择.这里不深入介绍静态库.动态库的底层格式,内存布局等,有兴趣的同学,推荐一 ...

  5. [Leetcode][Python]25: Reverse Nodes in k-Group

    # -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 25: Reverse Nodes in k-Grouphttps://oj. ...

  6. 驾驶机动车在高速公路上倒车、逆行、穿越中央分隔带掉头的一次记6分。 答案:错误 2013《123号令-附件2》一、机动车驾驶人有下列违法行为之一,一次记12分[重新考《科目一》]:(七)驾驶机动车在高速公路上倒车、逆行、穿越中央分隔带掉头的; 可以参考:http://zhinan.jxedt.com/info/6375.htm

    这一组交通警察手势是什么信号?_2600602 交警的面部对着哪个方向就是在指挥哪个方向的车,减速慢行是右手   左转弯待转是左手!~ 哎 本题解释由台州交通驾校提供 4755支持   hmq 只能看 ...

  7. Java 覆盖测试工具 :EclEmma

    http://www.eclemma.org/installation.html#manual EclEmma 2.2.1 Java Code Coverage for Eclipse Overvie ...

  8. app.listen(3000)与app是不一样的

    前者是server代码如下 Server { domain: null, _events: { request: { [Function] domain: undefined, _events: [O ...

  9. mongoose post方法总结and疑点

    官方文档代码: var schema = new Schema(..); schema.post('save', function (doc) { console.log('this fired af ...

  10. javascript获取url地址问好后面的值,包括问号

    javascript获取url地址问好后面的值,包括问号 <!DOCTYPE html> <html lang="en"> <head> < ...