超能课堂(134):Android手机到底需要多大内存?

2018-5-3 16:52  |  作者:梁俊豪   |  关键字:Android,内存

Android手机诞生至今10年,发展过程之迅速比起PC市场有过之而不及,硬件上的长足发展让我们使用Android手机的体验越来越好。不过大家也发现Android系统对于手机内存的需求就像个无底洞,给多少用多少,眼下就看见市面几乎不见2GB内存的Android手机,这到底是为什么?究竟多大容量的内存才能满足Android的胃口?

本文约2559字,需4分钟阅读

Android手机诞生至今10年,发展过程之迅速比起PC市场有过之而不及,硬件上的长足发展让我们使用Android手机的体验越来越好。不过大家也发现Android系统对于手机内存的需求就像个无底洞,给多少用多少,眼下就看见市面几乎不见2GB内存的Android手机,这到底是为什么?究竟多大容量的内存才能满足Android的胃口?

Android系统使用内存多,究其原因,这是与Android采用Linux内核有密切关系,而Linux与windows在内存管理有着巨大区别。

提到Android的内存管理,我们不得不提起Linux内核,因为Android系统内核就是从Linux内核修改过来的,继承了Linux内核优点以及主题框架,同时Android为了适应移动设备需求,在文件系统、内存管理、进程间通信机智和电源管理方面进行了修改,添加了相关的驱动程序和必要的新功能。Android在很大程度上保留了Linux的基本架构,因此Android系统的内存管理与Linux具有很高相似度。

用着Android手机的你会发现,刚开机手机内存就占到一半以上,似乎空闲内存很少,大家就着急地开始狂杀后台进程释放内存,避免内存不够造成卡顿。虽然表面上内存不够用了,但其实这是Linux内存管理的非常优秀特性,Linux会无视物理内存容量,只要你给多大,它就会物尽其用,会把一些常用的数据从闪存上预先写入到内存中,利用内存高速的读写性能提高数据访问性能,间接地提高了我们应用启动、运行速度。

但我们常用的Windows系统却不是这样,它只有在需要用到内存的时候才会给对应的进程分配内存,所以你会有一种错觉,Windows不吃内存,而用Linux内核的Android却非常占用内存。

所以Android系统占用内存多其实是个好事情,去年手机内存4GB起步,到今年6GB起步,甚至出现8GB内存,Android都将能充分利用起来,发挥了硬件规格提升带来的好处,而Windows将其视为摆设,尽管你插满4根槽32GB内存。

这就是为什么我们的2GB内存Android手机,开机只剩500MB空闲,而4GB内存Android手机开机还是只有1.5GB左右的空闲内存,因为其内存管理用得太“精明”了,有多少用多少。

Android系统内存究竟是怎么调度的?——垃圾回收机制

我们都知道Android上的应用都是基于Java而来,每启动一个应用就会产生相应一个虚拟机,Android对这些dalvik虚拟机内存作出硬性限制,这个限制非常严格,早期Android就限制在32MB,目的是迫使应用程序使用较小内存,让内存常驻更多的进程,提高整个系统响应速度,而且程序启动时候不需要从闪存加载到内存中,启动速度自然提升。

但进程申请的空间超过上限阈值时,就会触发“内存杀手”规则,为了保护用户使用体验,只会按顺序销毁优先级较低的进程来释放物理内存,让新加入、高优先级程序获得更多内存。

但是一些大型应用程序,比如游戏真的很需要大内存怎么办?随着Android手机硬件疯狂升级,祖传2GB内存已经入不了厅堂,Google取消了32MB硬性要求,放宽上限。同时程序员是有办法绕开整个虚拟机内存限制的,但过程非常复杂,这里就不展开说,主要是利用了Android系统内的native heapsize不受限制特性。

那么按照目前我们使用习惯来看,Android系统到底多少GB内存才够用?

2008年第一台Android手机HTC Dream G1只有192MB的内存,十年后的今天已经出现了8GB内存的手机,难道40倍的内存增长才能够满足今天的应用需求吗?非也,只是对于Android系统来说内存是多多益善。

目前对于不同Android 7.0系统以上手机来说,手机开机后,光是“Android操作系统”、“Android系统”、“系统用户界面”等进程就占用了1.2-2GB内存,所以2GB内存手机必然频繁进行内存回收,进而影响到手机流畅度,所以2GB内存手机越来越少了。


三星Galaxy S8手机内存占用情况

作为一部智能手机,你不可能只用来打电话、收短信,微信、微博、支付宝等都是相当必要的手机APP,所以我们手机后台都普遍存在十数个应用。下面来看看常见手机APP的内存占用情况。

常规手机App对内存占用都在300MB左右,功能特别丰富的可能要到500MB,游戏普遍上1GB。

下面让我们来看看不同内存大小手机开机后的剩余内存,加上一些必要的应用内存占用,我们方可得到一个可供参考的内存需求量。

目前手机内存需求=Android系统必要+大型游戏+应用后台待机×15

                           =2000MB+1000MB+50MB×15

                           ≈3.75GB

可见4GB内存对于目前Android系统手机来说必不可少。既然4GB就够了,现在中端机普及6GB,高端上8GB意义何在?

非常有意义!因为APP对于内存占用是动态的,其中就包含了一些图片素材,对于1080P分辨率手机就加载1080P素材,而2K就加载2K素材,显然分辨率越高,素材容量越大,当然对内存占用越大。

你想想索尼还有4K分辨率的Xperia XZ2 Premium手机,内存越大,系统就不会频繁回收内存,减少CPU占用,提高流畅有莫大帮助。6GB/8GB内存显然更加游刃有余,况且厂商宣传上也好看。不记得“GT 630 4GB”的故事吗?而且内存越大越不一定代表手机性能越好!

好了,又到了总结陈词的时候啦。如果你平常就聊聊天、刷刷微博,玩玩《天天爱消除》、《欢乐斗地主》,4GB内存足矣;如果你喜欢玩《绝地求生》、《荒野行动》这类大型游戏,那么4GB内存的Android手机是起步而已。

另外关于手机内存,大家都有些疑惑,再来讲一讲题外话。

为什么越来越多手机都自带进程管理软件?

在内存剩余不多时打开大型程序时会触发系统自身的调进程调度策略,这是十分消耗系统资源的操作,特别是在一个程序频繁向系统申请内存的时候。这种情况下系统并不会关闭所有打开的进程,而是选择性关闭,频繁的调度自然会拖慢系统。

比方说你需要运行《绝地求生:刺激战场》这类大型游戏,对于内存占用必然是巨大的,如果你主动关闭一些没用的进程释放内存,可以确保大型游戏更为流畅的运行。但是正常情况下你是不需要去管它,由Android系统的内存管理模块自动管理即可。

内存里这么多进程待着,不会更加耗电吗?

Google早就考虑到这一点,当应用被切换到后台时,只会冻结它切换前最后一刻的运行状态,此时不会再消耗CPU资源,只有那种后台继续执行任务的应用才会消耗资源,比方说是你在后台播放音乐、导航之类的。因此这个设计本来就是为了适应手机多应用切换的,当你切换回程序时,不必再次加载界面资源,启动速度更快,体验更好。

  • 游客  05-29 05:05

    游客:

    越多越好,没有哪个人嫌弃运存、内存太多的!
    05-04 09:18
  • 支持(2)  |   反对(0)  |   举报  |   回复
  • 如果内存使用不了,再多一万倍也没用,还是那个速度和体验!

    支持(0)  |   反对(0)  |   举报  |   回复

    40#

  • 游客  05-29 05:02

    实际上windows从win7开始也差不多是这个德行!只不过比安卓程度轻!即越大的内存你的系统占用的内存越多!如果你只有1G内存,那么系统才占4-5百MB!如果是16G内存,系统轻松占1G多,甚至2G以上!
    还有狂人用128G内存测过系统占用率居然达到10G左右!也都是采用类似的预读取方式!实际上卵用也没有!
    真要有说的那么好,安卓早就在系统流畅度把苹果ios虐的哭爹喊娘了,实际情况正好相反 ...

    支持(3)  |   反对(0)  |   举报  |   回复

    39#

  • 游客  05-26 19:27

    游客:

    然而辣鸡麒麟970玩不了游戏要内存有卵用吖,一跳下肥鸡就被苹果小米打爆菊花,吃不了鸡只有被吃鸡的份儿。
    05-05 21:53 已有1次举报
  • 支持(1)  |   反对(1)  |   举报  |   回复
  • 游客:

    兄弟那是你智商问题
    05-06 12:26 已有6次举报
  • 支持(4)  |   反对(4)  |   举报  |   回复
  • 除了智商问题,也可能是小脑发育问题

    已有2次举报

    支持(0)  |   反对(0)  |   举报  |   回复

    38#

  • 游客  05-14 17:41

    简单来说HD分辨率的6G够了,2K以上的需要8G,游戏党标配8G

    支持(0)  |   反对(1)  |   举报  |   回复

    37#

  • 游客  05-06 12:26

    游客:

    然而辣鸡麒麟970玩不了游戏要内存有卵用吖,一跳下肥鸡就被苹果小米打爆菊花,吃不了鸡只有被吃鸡的份儿。
    05-05 21:53 已有1次举报
  • 支持(1)  |   反对(1)  |   举报  |   回复
  • 兄弟那是你智商问题

    已有6次举报

    支持(4)  |   反对(4)  |   举报  |   回复

    36#

  • 游客  05-05 21:53

    然而辣鸡麒麟970玩不了游戏要内存有卵用吖,一跳下肥鸡就被苹果小米打爆菊花,吃不了鸡只有被吃鸡的份儿。

    已有1次举报

    支持(1)  |   反对(1)  |   举报  |   回复

    35#

  • 游客  05-04 12:20

    王者荣耀最大1.1G

    支持(0)  |   反对(0)  |   举报  |   回复

    34#

  • 游客  05-04 11:24

    我还真不需要后天开15个程序,10个怎么都够了,所以我现在红米4的备用机 3G内存也不卡

    已有1次举报

    支持(0)  |   反对(0)  |   举报  |   回复

    33#

  • yjhercules终极杀人王 05-04 11:19

    ios也用,不过ios 问题是不舒服
    好处是普通人玩游戏 特别是游戏机模拟器 比安卓要好

    已有1次举报

    支持(2)  |   反对(3)  |   举报  |   回复

    32#

  • 游客  05-04 10:57

    yjhercules 终极杀人王 :

    使用自动注销进程在开发者模式,
    另外国产软件都是后台服务和进程才是吃光内存的关键
    然后就是软件在后台做不为人知的操作,
    大数据 然后是各种推送 和占有
    相当于用户花钱买的手机 的资源 被别人非法占用
    解决办法 不装或者 用软件屏蔽
    这么说8g的手机 装lineageos 可用内存7g
    而且装自己的 5g多
    另外安卓的效率java运行机太弱
    你用安卓玩模拟器就发现
    05-04 08:18 已有2次举报
  • 支持(5)  |   反对(3)  |   举报  |   回复
  • 请你继续用ios就行,安卓是不怎么好

    支持(0)  |   反对(0)  |   举报  |   回复

    31#

  • 游客  05-04 10:27

    杭州有一个女孩是中国大陆同性恋的倡导者,她与众多同性恋者在杭州成立了同性恋联盟。我很奇怪她为什么会不遗余力的为同性恋站台。翻开这个女孩的生命历史,发现她的生命来源竟然是魔王撒旦的第七个儿子,用魔界语言叫作隆泰斯朗(意为灾祸之源),它在哪个时代出现就是魔王撒旦对那个时代社会最恶毒的诅咒。魔子隆泰斯朗曾经转生在古罗马帝国尼禄统治时代,那一世他是一个同性恋男子名叫海希,他大力宣传同性恋、乱伦等魔性性行为,36岁时被教廷处以死刑钉死在十字架上。死后被打入地狱受尽酷刑。十四世纪魔子转生欧洲大陆一名女巫 ...

    已有31次举报

    支持(2)  |   反对(5)  |   举报  |   回复

    30#

  • 游客  05-04 09:18

    越多越好,没有哪个人嫌弃运存、内存太多的!

    支持(2)  |   反对(0)  |   举报  |   回复

    29#

  • 游客  05-04 09:10

    我觉得至少要128G以上了,60多G的对现在使用来说完全不够用,手机储存的东西实在太多了,各种资料图片的,都得存在手机里。楼主分享不错!

    已有6次举报

    支持(0)  |   反对(14)  |   举报  |   回复

    28#

  • 游客  05-04 09:05

    哼,我现在养成习惯经常清理手机内存,目的可不是为了节省内存之类的,而是这些liumang不知道会在后台背着我做些什么

    支持(1)  |   反对(0)  |   举报  |   回复

    26#

  • 游客  05-04 08:58

    多大内存不重要,关键是卡不卡。

    支持(0)  |   反对(0)  |   举报  |   回复

    25#

  • yjhercules终极杀人王 05-04 08:41

    wps 看了txt小说 就成占800m内存
    rom占 2g
    没有办法 把txt 给做了分屏
    奇怪的是x86的安卓软件就ok
    同样的软件不卡 也不热
    也不占内存

    已有2次举报

    支持(0)  |   反对(0)  |   举报  |   回复

    24#

  • 游客  05-04 08:19

    游客:

    看到一个微信就占了780M的内存,心里凉凉
    05-04 00:42
  • 支持(1)  |   反对(0)  |   举报  |   回复
  • 微信占用是因为要加载聊天记录到内存上去

    已有1次举报

    支持(0)  |   反对(0)  |   举报  |   回复

    23#

  • yjhercules终极杀人王 05-04 08:18

    使用自动注销进程在开发者模式,
    另外国产软件都是后台服务和进程才是吃光内存的关键
    然后就是软件在后台做不为人知的操作,
    大数据 然后是各种推送 和占有
    相当于用户花钱买的手机 的资源 被别人非法占用
    解决办法 不装或者 用软件屏蔽
    这么说8g的手机 装lineageos 可用内存7g
    而且装自己的 5g多
    另外安卓的效率java运行机太弱
    你用安卓玩模拟器就发现

    已有2次举报

    支持(5)  |   反对(3)  |   举报  |   回复

    22#

  • 游客  05-04 02:08

    说得好,我选择iphone

    支持(6)  |   反对(1)  |   举报  |   回复

    16#

  • 游客  05-04 01:07

    我就是来看看微信的内存占用,当然结果并不意外,这果然是一个流氓软件大行其道的时代!

    已有1次举报

    支持(6)  |   反对(0)  |   举报  |   回复

    15#

查看全部评论(30)

回复