我知道,对于很多人而言,尤其是那些有强迫症者,这是个然并卵的命题,但是在我们周围,还有很多这样的智能手机用户:怎么这个手机3G内存,空闲的也只有600MB呢?以前那个2G内存的手机都有800MB的空闲,我要一键清理内存,我要定时清理内存……

清理与加速,是手机助手们吹嘘的主要功能

像我们这些在Windows陪伴下成长起来的玩家,“内存不足”是留存在心底挥之不去的阴影,即便到了今天,到了Android系统,这个阴影依旧。实际上Android有着与Windows完全不一样的内存管理机制,Windows上的那一套,在这儿并不是行之有效的。

Android中可用内存只是个没意义的数字

在Windows中,可用内存是越多越好,但在Android中,完全不必在意这个数据。在下图中,有着3GB内存的某手机,实际可用内存只有81MB了,你可千万别说这个系统好垃圾,只能显得自己的无知。

一加手机X的内存使用状况(内存3GB可用的只有81MB了)

Windows中只有需要用到内存时才会为程序分配内存,一旦这个程序被关闭,分配的内存也就释放出来成为新的可用内存。然而绝大多数Android应用都没有退出的菜单设计,这些运行过的应用无非是从前台转入到后台,大多数依旧保留在内存中并不会也不需要主动释放,这样下次再运行该应用时,可以更快的启动。

无论手机的物理内存有多大,Android都能将其充分利用,将需要用到(包括之前用过的)的数据从硬盘读入到内存,利用内存的高速保证系统的数据访问性能,也就是说,可用内存越小,内存的利用率就更高,其中的数据就越多,数据访问的命中率就越高,系统也就越快。如果还有人和你说手机用不了4GB这么的大内存,那只是厂商的噱头而已,你完全可以鄙视再教育之。

你可能会问,当打开的应用越来越多,占用的内存总会爆满的,那怎么办呢?

该出手时就出手,Android有着优秀的内存回收机制

在上面举例中,3GB内存的手机只有81MB的可用内存了,如果此时打开需要256MB内存的“腾讯视频”,会提示“内存不足”吗?答案是不会的。

当内存不足时,内存回收机制就开始起作用了

实际上,作为Android的开发语言Java没有提供任何操作来释放内存(这也是与iOS很大的不同点),是通过系统的内存回收机制来进行管理。Android使用了一个名为Low Memory Killer(LMK)的机制来管理内存,当内存出现不足时,LMK就开始挥舞屠刀杀掉一些进程,那么问题来了,杀谁?

说到这儿,必须多费点笔墨。Android会对进程的重要性进行评估,以oom_adj来表示,oom_adj的值越小,则重要性越高,oom_adj的值越大,该进程被系统选中杀掉的可能性越高,当oom_adj值为0,这意味着它永远不会被系统终止。

Android有一套自己独特的进程管理,比如可以设定“当内存小于22M时,结束oom_adj大于14的进程”这样的策略,可以看到oom_adj非常重要,关乎进程的死生命运。

Android默认的进程管理策略

像上表描述的那样,在默认策略中,当内存低于24MB(6144*4K)时,LMK就会杀掉所有oom_adj为15的进程(即空进程),这个警戒值可以人为修改,一般情况下也没必要去改变它。为了更好的评估进程的重要性,Android将进程分为六类,如下所述:

前台进程(foreground):oom_adj=0,指正在当前屏幕上显示的进程和一些系统进程,一旦你回到主界面 或切换到其它程序,当前进程变为隐藏进程,前台进程是不会杀掉的;

可见进程(visible):oom_adj=1,可见进程虽然不在前台,但依然可见,如widget、输入法等,这部分进程也非常重要,基本上不可能被杀掉;

次要服务(secondary server):oom_adj=2,目前正在运行的一些服务,如下载、播放音乐,它们虽然属于次要服务,但与系统息息相关,一般也不会被杀掉;

隐藏进程(hidden):oom_adj=7,这个很容易理解,当应用从前台转入到后台后,也就成为隐藏进程了,通常一键清理内存就是清掉这些隐藏进程;

内容提供者(content provider):oom_adj=14,没有程序实体,只提供内容供别的程序去用的,比如日历供应节点,显然这类进程最有可能被先杀掉;

空进程(empty):oom_adj=15,有些程序在程序退出后,依然会在进程中驻留一个空进程,这个进程里没有任何数据在运行,作用往往是提高该程序下次的启动速度或者记录程序的一些历史信息,这类进程无疑是要最先被杀掉的。

Android的内存管理机制非常适合嵌入式系统,能充分发挥出硬件的潜力,当内存越大,它的优势就越明显。

Android手机需要清内存吗?需要吗?

回到要讨论的话题,Android手机需要清内存吗?需要吗?需要吗?需要吗?结论是再明显不过:不需要!其实这个结论也适用iPhone手机,iOS在内存管理方面更为激进。

我们完全不用纠结Android手机上的可用内存大小,也不需要去一键清理内存,有时可能还会适得其反,尤其是在手机内存2GB起步3GB成主流的今天,我们会很享受Android的内存管理机制。目前硬件规格的Android手机系统流畅度上都有着很好的表现,基本上能与iOS叫板,在Android 5.1.1以上版本中如丝般顺滑都是可以期待的,至于为什么会“越用越卡”,这个问题就有点复杂,下次再单独发文讨论讨论。

android机清理存储卡,越用越卡!Android手机需要清理内存吗?相关推荐

  1. android获取内部存储卡里的文件,获取Android内部存储(外部SD卡)和扩展存储卡(TF卡)的路径...

    获取Android内部存储(外部SD卡)和扩展存储卡(TF卡)的路径 获取Android内部存储(外部SD卡)和扩展存储卡(TF卡)的路径 sd卡存储外部存储卡路径外部存储卡外部存储卡路径内置存储卡外 ...

  2. android存储修改成256g,5分钟读懂手机系统文件清理,64G内存也能当作256G使用

    使用安卓手机的小伙伴都知道如果手机内存空间不足,最有效的方法就是删除系统里的一些占空间的文件夹.但是手机里的大部分文件夹都是英文名,里面有的是与操作系统息息相关的文件,如果删除就会导致手机无法正常工作 ...

  3. 都说它是年度Android机皇,都说它是年度Android机皇,Galaxy Note20 Ultra到底怎么样?...

    值得一提的是,Galaxy Note20 Ultra首发搭载了康宁大猩猩第七代玻璃,其抗刮擦性能是康宁第六代大猩猩玻璃的两倍,而且即使从高达1.5米的高度跌落至坚硬粗糙的表面也能保持完好. 我手上的迷 ...

  4. 都说它是年度Android机皇,都说它是年度Android机皇三星Note10到底怎么样

    记者 | 李竞择 在8月8日清晨三星发布Galaxy Note10系列之后,我就开端犹疑,在手持Galaxy S10的前提下,究竟还有没有必要换购下半年的三星新旗舰? 几个小时后,我下单了国行先行者. ...

  5. 如何实现手机缓存清理的功能

    android手机上的杀毒软件或者是手机管家等类似应用都会有垃圾清理的功能, 那么清理的缓存文件是什么? 怎么去找出应用的缓存文件并将他们清理, 在这里我将介绍如何实现手机垃圾文件清理的功能. 缓存文 ...

  6. 小米盒子4 android版本,安卓系统越用越卡,曾学忠:小米 10 至尊纪念版搭载黑科技 MITurbo 4.0 技术...

    IT之家10月31日消息 昨日,小米集团副总裁.手机部总裁曾学忠谈及了 "Android 系统为什么越用越卡"的问题 曾学忠表示,Android 系统越用越卡是因为用户长时间使用手 ...

  7. android shell强制删除文件夹_原来手机中的这些文件可以删除,难怪手机越用越卡!...

    很多从 iOS 转移到 Android 生态的用户,总是会有这样的抱怨:Android 系统越用越卡,就算清理垃圾也没用! 但其实在Android系统中,除了日常的清理垃圾,我们还可以将一些没用的文件 ...

  8. Android手机怎么会越用越卡?真相就在这里

    Google的这些作为让Android系统在流畅度上有了实质性的突破,从宏观上讲,Android是越来越不卡越来越流畅,那么,在如今这么强大的硬件支持下,为什么还会让很多人觉得越用越卡呢? 图片存在盗 ...

  9. Android手机怎么会越用越卡?

    自2008年第一部Android手机发布至今,虽然在操作体验上一直生活在iOS阴影之下,但不可否认,Android是越来越强了,与iOS的差距越来越小,尤其是一向被诟病的流畅度,在Android 5. ...

最新文章

  1. 开发日记-20190612 关键词 读书笔记《鸟哥的Linux私房菜-基础学习篇》
  2. 烂泥:python2.7和python3.5源码安装
  3. C++ 正态分布、概率累积密度函数的使用(boost库)
  4. linux下用户操作
  5. go 写文件_「go」 项目多个文件编程
  6. Intel Skylake (Client) 架构/微架构/流水线 (2) - 前端
  7. 程序员学会精刷LeetCode后,会变得有多强...
  8. idea超炫的自定义模板
  9. 【转】设计模式六大原则(1):单一职责原则
  10. 【智能制造】推进智能制造,他山之石可以攻玉!
  11. 京东智联云贪心科技:图卷积神经网络在推荐系统的应用
  12. Android实现推送PushService通知Notification
  13. 基于python+pyqt5的串口助手
  14. 总结获得【酷我音乐】歌曲URL地址
  15. 7-11 超级玛丽 (10 分)
  16. 大数据智慧交通项目【完整资料】
  17. 三星android se干啥得,结果竟然这样!看iPhone SE与最强Android旗舰三星S7对比!
  18. 假设有一个池塘,里面有无穷多的水。现有2个空水壶,容积分别为5升和7升。问题是如何只用这2个水壶从池塘里取得6升的水?
  19. 【网络安全】python实现栅栏密码加解密
  20. python 数据分析课程改革网_计算思维培养视域下《Python程序设计》课程的教学改革实践...

热门文章

  1. linux 浏览器 翻墙,猎豹浏览器启动二轮内测 支持第三方插件
  2. 计算机个性化桌面后总是恢复,怎么恢复原始桌面
  3. Java编程思想 Ch20 注解
  4. 基础面试题: 面向对象三大特性
  5. Java全局变量怎么定义?什么是全局变量?
  6. C语言 递归函数实现二分查找
  7. 5.2、Jmeter使用内置函数__base64Encode()以及__base64Decode()
  8. nas918+支持的cpu_迈进PCIe 4.0 十一代酷睿IO技术大升级:不止是速度翻倍-Intel ,PCIe 4.0,酷睿,CPU ——快科技(驱动之家旗下媒体)-...
  9. RPA之家-Attended Automation
  10. 一位总经理的辞职信及答复