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. C#时间日期操作

     一.C# 日期格式 DateTime dt = DateTime.Now; dt.ToString();//2005-11-5 13:21:25 dt.ToFileTime().ToString() ...

  2. std::string 字符替换函数

    // 替换路径中所有“\”为“/” #include <algorithm> static std::string ConvertSlash(std::string& strUrl ...

  3. jQuery1.9.1针对checkbox的调整

    在jquery 1.8.x中的版本,我们对于checkbox的选中与不选中操作如下: 判断是否选中 $('#checkbox').prop('checked') 设置选中与不选中状态: $('#che ...

  4. Docker的C/S模式详解

    Docker的C/S模式 Docker的C/S模式 Docker Client通过Remote API与Docker Server通信: RESTful风格API STDIN.STDOUT.STDER ...

  5. php数组array,知道键名如何提取键值

    如果是知道键值,需要查找键名,直接使用array_search()即可.现在反过来,如何操作?   (1)array_walk_recursive()加自定义函数查找   $arr=array( 'n ...

  6. Silverlight并行下载与串行下载

    思路清晰后仅仅只需百来行代码便可轻松编写出一套完整的资源动态下载组件- SerialDownloader和ParallelDownloader,它们共用一个完成资源表,且串行下载集成了优先机制(Dow ...

  7. linux 关于动态库的知识

    问题起缘于编译一个程序时,使用glib2-2.28.8的动态库,而系统自带的是glib2-2.22.5 不想升级系统的glib2库,而使用程序自带库文件的方式加载(类似windows系统,优先加载当前 ...

  8. 3D模型选中显示样式改变

    osg::ref_ptr<osg::Material> material = new osg::Material(); //模型材质信息 material->setTranspare ...

  9. Cortex-M3学习日志(四) -- UART0实验

    LPC1768含有4 个符合16C550工业标准的异步串口UATR0-UART3,其中UART1具有标准的MODEM接口和RS-485/EIA-485接口模式.串口通讯接口是连接计算机.终端.通讯控制 ...

  10. JSON 解析器。JSON.stringify和JSON.parse

    以前用的是JavaScript  的eval. 现在JSON 提供了JSON.stringify和JSON.parse两个函数. JSON.parse用于从一个字符串中解析出json对象. JSON. ...