内存越大Android卡顿的几率越小?

2014-12-15 10:52专题 标签:卡顿 内存 Android 舌尖上的论战

步入2014年之后,新款Android手机要是没有配备3GB内存都不好意思叫“旗舰”。因此,很多消费者也习惯通过内存大小来判断某款手机的性能。比如,配2GB内存手机的性能就一定就比1GB内存手机强,运行也就更流畅、不易出现卡顿。那么,事实果真如此吗?

了解Android内存的机制

“一款配2GB内存的Android手机,当2GB内存完全占用之后就会卡死”,这是很多Android手机用户的潜在认知。于是,很多用户总认为需要不停的优化内存才不会卡顿。实际上,这个观点理论上并不成立。

Android系统自身有一套成熟的内存管理机制,我们可以将其理解为“末位淘汰”。简单来说,Android系统会将所有系统级APP(如时间、系统输入法)和第三方APP(如微信、游戏)进行优先级排序,当剩余内存不足以满足当前启动程序的运行要求时,系统便会自动关闭优先级靠后的那些APP和相关进程。

利用一些第三方优化软件提供的“一键清理”(图6),虽然可直接清空所有驻留后台的程序,但这样做会造成无法再接收聊天消息,并导致程序二次启动的时间延长。在“末位淘汰”机制下有些得不偿失。

06

图6 :很多手机或软件都提供了一键清理内存的小插件,并可自定义白名单

无需用户干预的“末位淘汰”

举个例子,你的手机正同时运行着微信、微博、QQ、美团、淘宝、京东、天气这7个APP,此时内存占用率为80%。当你想玩“真实赛车3”游戏时,在你点击该游戏图标的一瞬间,系统就会自动判断运行“真实赛车3”需要的内存资源。比如该游戏需要60%的内存,根据“末位淘汰”机制,像美团、淘宝、京东、天气这几个非即时通讯的APP就会自动被关闭,然后才会正式启动“真实赛车3”这款游戏。

因此,当我们退出某款游戏后,按Home切换到后台运行程序时(图7),有时会还原到之前窗口状态,但有时该程序则会重新启动。而后面的情况,就是系统为了保证这款游戏运行,自动关闭了后台运行的这个程序,将释放的内存用于游戏的启动上了。

07

图7:Android通过长按Home键可以在后台程序间切换

换句话说,Android手机理论上是不存在“内存用完”的状况的,因为Android内存管理机制总会通过自动关闭后台的末位进程,来确保手机总有足够的内存去满足新启动程序的运行需求。更大的内存可以减少程序打开时等待的时间,提高程序间切换的效率,但对改善游戏或程序运行的流畅度意义不大。那么,Android手机在运行过程中的卡顿甚至卡死状态到底源于何处呢?

小提示

笔者着重介绍了Android内存管理机制,并非否定内存容量的重要性。由于Android手机的SoC(处理器)集成的GPU并没有独立显存,所以需要借由一定容量的内存用于虚拟GPU显存。所以,除了系统本身和APP以外,手机分辨率越高,对内存的依赖也就越大。因此,对1080P/2K手机而言,2GB/3GB内存还是很有必要的(图8)。而更大的内存意味着手机有更多的冗余,去满足同时运行更多APP的条件。

08

图8 :标配2K屏幕与3GB内存的三星Note 4

Android为什么会卡顿

在绝大多数情况下,Android手机的卡顿是和内存无关的。而卡顿现象的产生,则主要体现在“先天”与“后天”方面。

“先天”的卡顿

所谓“先天”,就是源于硬件端性能不够给力造成的。先给大家普及一个技术原理:1080P屏幕(1920×1080像素)拥有207万个像素点。理论上,每100万像素需要4GB/S的内存带宽(和内存容量无关,取决于处理器所支持的内存带宽参数)才可确保100%流畅。按照这个标准,唯有骁龙800级别的处理器(内存带宽为12.8GB/S)才可完美驱动1080P屏幕。很多搭载联发科MT6592八核处理器(内存带宽为5.3GB/S)的手机虽也配备了1080P屏幕,但由于它仅能给每100万像素分配2.56GB/S的带宽,自然怎么优化都会略有卡顿感,哪怕你给它武装4GB内存也无法弥补源于处理器的先天缺陷。

同理,2K屏幕(2560×1440像素)的像素点达到了384万,现阶段只有高通骁龙801(14.9GB/S)的内存带宽才可将将满足流畅驱动的标准(图9)。

09-1

图9 :借助Adreno 330 GPU,让高通骁龙801成为了目前少有可驱动2K屏幕的处理器

“后天”的卡顿

所谓“后天”,主要体现在系统端和第三方APP端的优化与设置上。换句话说,“后天”就是“人祸”。Android手机在使用上的卡顿则体现在两个环节:启动器(Launcher)与程序自身(APP)。

启动器:

小米的MIUI、魅族的FlymeOS、OPPO的Color OS、酷派的Coollife UI,这些“由Android系统深入定制的OS”,其实都算是“第三方启动器”(图10)。本来,Android在步入4.2版本之后,通过“动画过渡”和“黄油计划”,其原生启动器在流畅度上足以比肩iOS了。可惜,很多第三方启动器只顾华丽的界面和特效,最终导致了流畅度的不足,至少笔者还没遇到任何一款第三方启动器在流畅性上能超越原生启动器。

10

图10:如果你觉得手机系统不流畅,可以考虑安装第三方启动器,比如口碑最好的Apex Launcher

程序自身:

Android系统本来捆绑着日历、邮箱、地图、商店等APP,但手机厂商往往喜欢将它们“阉割”,用自主或第三方开发的类似APP替换(图11)。那么,你觉得这些替换的APP能有原生的APP优秀吗?

11

图11 :各种第三方软件替换了原生APP

谷歌在Android 4.x时代推出了Holo规范,由此规范开发的APP可享受GPU加速等一系列特性,获得更佳的流畅度并降低CPU占用率。可惜,Holo规范并非强制标准,很多开发者为了确保与Android2.x设备的兼容性,依旧沿用了Java开发规范。Java开发的APP在Android 4.x流畅度受限,而Holo在Android 2.x中也普遍遭遇卡顿崩溃现象,这种因开发规范引起的卡顿,也是值得引起我们关注的。

最后就是一些“潜规则”引起的问题了。为了盈利,很多APP都开放了各种推送服务,哪怕你已经关闭了某个软件,但它依旧会在后台留有进程并自己搭建推送服务,成为占用系统资源,耗费无辜电量的“蛀虫”。

小提示

无论是高通、联发科、三星还是海思,这些Android手机常用的处理器都具备自我保护功能。当手机持续玩游戏导致芯片温度过高时,会通过自动降频的方式自我降温。所以,Android在持续玩游戏时经常遭遇“越用越慢”的现象(图12),其实这可能就是处理器降频后引起的卡顿,也是正常现象。

13

图12:发热降频是导致手机突然卡顿或卡死的重要原因

小结

很多Android手机用户总会将卡顿或卡死问题归结于内存,而本章节的目的就是想让大家别再“误会”内存了。Android的卡顿现象,更多的时候还是源于系统本身的优化,以及各种垃圾APP和服务对系统资源的侵蚀。想彻底告别卡顿,挑选高端的处理器平台(如骁龙801)与合理分辨率屏幕的组合远比追求大内存更有意义,而对内存大于2GB的手机而言,更是没必要不停的优化内存。