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. QF——UI之几种常用的隐藏键盘的方法

    怎么在填写完UITextField之后,点击空白处,隐藏软键盘. 下面两个方法都可以隐藏键盘 [tf resignFirstResponder]; 停止textfield的第一响应者 [self.vi ...

  2. 移动web开发

    在现代网页开发中,新增了一个移动设备网页开发,在这样的需求下,你需要考虑如何将移动web和pc web同步处理 /* * 浏览器如何识别移动设备 * */ var ua = navigator.use ...

  3. 安装虚拟机VMWare时出现1021错误的解决办法

    今天安装虚拟机(VMWare Workstation9.0),中途老是出现错误:Failed to create the requested registry key key installer er ...

  4. function(ev) //括号里的ev是什么东西,什么意思?

    事件对象: 楼上的不要误导新人 ev是我们获取事件详细信息的event是IE的写法 大多数人是写window.event 其实区别也差不多 好像window.event更安全些 我也不记得了 火狐呢 ...

  5. [原创]浅谈NT下Ring3无驱进入Ring0的方法

    原文链接:浅谈NT下Ring3无驱进入Ring0的方法 (测试环境:Windows 2000 SP4,Windows XP SP2.Windows 2003 未测试) 在NT下无驱进入Ring0是一个 ...

  6. SD和SDHC和SDXC卡的区别是什么

    SD卡,SDHC卡,SDXC卡区别在规格不一样,SD卡最大支持2GB容量,SDHC 最大支持32GB容量,SDXC 最大支持2TB(2048GB)容量,支持SDXC卡的数码设备是兼容支持SD卡与SDH ...

  7. 计算机原理学习(2)-- 存储器和I/O设备和总线

    前言 前一篇文章介绍了冯诺依曼体系结构的计算机的基本工作原理,其中主要介绍了CPU的结构和工作原理.这一篇主要来介绍存储区,总线,以及IO设备等其他几大组件,来了解整个计算机是如何工作的. 这些东西都 ...

  8. String类的实现,内部采用字符数组实现

    #include <iostream> using namespace std; class String{ public: String(const char *str = NULL); ...

  9. poj1656---数黑格子

    题意:有white,black,test操作 black将给定范围涂黑,white将给定范围涂白,test将给定范围的黑格子数出来并且输出 思路:无论哪个操作格子范围都在  (x,y)  (x+L-1 ...

  10. javascript数组排序-----1

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...