Android为何比iOS卡?论1G内存的使用
昨天,一位认证信息为小米员工的网友在微博上发言,“iPhone 6 用户都不在意 1G 内存不够,红米 2 的 1G 内存够用了,保持流畅的秘诀就是少装 App.”后来的事情大家知道了。
要保持安卓手机流畅,少装 App 确实有用,不过 iPhone 6 是否流畅和少装 App 却没有半个F码的关系。
iOS 8 让人们第一次发现原来苹果也会卡顿,而与之相比,Android 卡 Sh1t 却早已名声在外。
Google 在推出 4.4 时发明了 ART (Android runtime)来解决卡慢, 5.0 时又用 ART 彻底取代 Dalvik,号称实现高效、省电、流畅的 Android 系统目标已经实现。
安卓机真的能不再卡顿了吗?一切还得从根源说起!
四大先天因素埋下卡顿根源
第一、基因使然。
iOS 只需要保证在苹果仅限的几款移动设备上的运行体验,而 Android 则需要保证能兼容尽量多的已存在和未存在的不同硬件组合。
iOS 老祖,UNIX 之父 Ken Thompson
Android 老祖,Linux 之父 Linus Torvalds
iOS 基于 Apple 的 OSX,而 OSX 基于 FreeBSD ,FreeBSD 又是在 UNIX 上衍生的,其根源可以追溯到 1969 年 AT
Android 基于 Linux,起源于 1991 年 Linus Torvalds 的一个简单需求。
其实从起源之处就能看出未来命运的注定不同:
UNIX 是与硬件配套的商业软件,而 Linux 则是可运行在多种硬件上免费自由的开源系统。
一个为指定硬件定制优化的系统与一个要在上万种奇葩配置上跑起来的系统相比,结果会如何?
第二、响应机制。
iOS 最先响应屏幕反应,而 Android 响应屏幕排在应用与框架之后。
iOS 响应顺序依次为 Touch——Media——Service——Core 架构,当用户只要触摸接触了屏幕之后,系统就会最优先去处理屏幕显示也就是 Touch 这个层级,然后才是媒体(Media),服务(Service)以及 Core 架构。
Android 的优先级响应级别则是 Application——Framework——Library——Kernal 架构,和显示相关的图形图像处理这一部分属于 Library,当你对屏幕操作之后,Android 系统首先会激活应用、框架,然后才是屏幕最后是核心架构。
第三、开发语言。
iOS 采用执行效率极高的 Objective-C 语言,而 Android 采用的 Java 语言因为虚拟机的存在,二次转化再执行效率很低。
Android 开发是基于 Java“Write once, run anywhere”理念,正因为这个理念,引入了虚拟机,也就是说编码实际上需要“转换”才能最终以用户可看的程序跑起来。
第四、后台管理方式。
iOS 中的后台程序并不是指当前后台运行程序,其实是你最近使用过的程序使用记录,比如浏览器的网页浏览记录。
Android 的后台则是一直在内存中运行,程序在进程活动停止后都会保留在内存中,直到系统需要更多内存再释放这部分资源。
这个后台管理机制造成用户感知的差异化放大,Android 旗舰已进入 8 核 CPU、3G RAM 的级别,而 iOS 却只需要双核 1G 就能保持稳定流畅的头衔不动摇。
三大后天因素拉低用户体验
其实 Android 与 iOS 相比,除了四大先天不同所造成的差距外,还有三大后天因素让 Android 的体验越来越不尽如人意。
1、无序的开发者;
Android 的开放与自由带来了大量的开发者,也让一部分不遵守规范的开发者进入 Android 的世界,于是应用开始肆意挥霍硬件资源,不少程序都开始自动启动。
当你安装了不少的应用之后就会发现,这些应用都开始驻留后台。杀掉这些应用的进程无助于解决问题(因为他们会自动重新启动,不断地杀进程会造成他们不断重启,最终耗光你的电池),最后你只能彻底删除他们。
因为这个删除的用户需求,一款叫做 Clean Master 的应用还带动了猎豹移动的上市。
2、无奈的 Android Market;
由于一些让人无奈的原因,各种水平不齐、鱼龙混炸的第三方市场充斥于市。而即使在官方的 Google Play 也经常爆出恶意软件或者仿冒软件。混乱的市场和不守序的开发者让 Android 的应用环境进入一个越来越差的死循环。
3、无解的碎片化。
100 个 Android 手机制造商从 Google 那拿到 Android 代码之后,就可以制造出 100 种搭载不同硬件平台、界面的 Android 手机,即使是搭载完全相同的硬件,不同品牌的机器,运行速度,软件兼容性都会有区别,这就是 Android 开放带来的碎片化。
就这样,无论在先天还是后天上 Android 都注定着一些越来越卡,曾经的 4.4 没能解决,5.0 也不会解决。
那么 Android 5.0 Lollipop 若是没能解决卡顿,又到底改变了什么?
1、改变了运行环境,却没改变运行秩序。
ART 带来的体验明显提升,告别了虚拟机的 Android 更快更省电,不过对于一些不遵守规则的应用而言什么都没变,还是想怎么折腾就怎么折腾。
2、加剧了本已严重的碎片化。
Lollipop 的推出让很多 Android 用户欢呼了一阵,几个月过去后他们发现真相,自己的手机连 4.4 的官方更新都还没收到。于是大家就都明白了将希望寄托在新版系统身上,还真不如刷个 CM 或者 MIUI 包。
所以 Android 的卡顿其实从根源上就注定了没有办法解决,除非 Google 愿意放弃现有市场全部推倒重来,不过那样的系统和 Android 已经没有任何关系了吧?
其实 Android 粉丝们不必过分担忧卡顿,iOS 粉丝也不必庆幸流畅,毕竟库克的 iOS 8 已经开始砸金字招牌,说不定到了 iOS 10 与 Android 7.0 发布,大家都会变得一样,没个十核 CPU 加上 8G 内存大家都会变得一样卡了呢?