安卓系统提示内存不足内存的使用机制是怎样的?

当前位置 & &
& 手机内存越大越好?都被耍了!
手机内存越大越好?都被耍了!
00:18:52&&出处:&&作者:
编辑:上方文Q &&)
让小伙伴们也看看:
阅读更多:
好文共享:
文章观点支持
当前平均分:0(0 次打分)
[04-14][04-14][04-14][04-13][04-13][04-12][04-12][04-11][04-11][04-11]
登录驱动之家
没有帐号?
用合作网站帐户直接登录今日论坛第 1 个签到,每日签到可得财富值+2,连续5天签到后再连续签到则每日可得财富值
+4,记得每天都来签到哦~
上一主题:
下一主题:
查看: 2488 | 回复: 12
安卓系统的内存管理机制,从MIUI 论坛搬运来的
财富值 162
交易信用 0
原创小红花 0
积分/帖子:144
连续签到天数:1
全部签到天数:1
注册时间:
手机型号:
状态: 离线
安卓系统的内存管理机制,从MIUI 论坛搬运来的
每天在论坛里看到大家在抱怨,为什么26刷了miui后运存变得这么少啦,甚至有人说怎么用了900+了啊。开机内存怎么只有200m,用一会怎么就变成100多m啦~!其实这些都是自己平时的使用习惯造成的!在这里开个贴解释一下!
首先你要知道Android系统是基于Linux 2.6内核开发的开源操作系统(linux是啥都不知道自己去百度吧),而linux系统的内存管理有其独特的动态存储管理机制。
不过Android系统对Linux的内存管理机制进行了优化,Linux系统会在进程活动停止后就结束该进程,而Android把这些进程都保留在内存中,直到系统需要更多内存为止。
这些保留在内存中的进程通常情况下不会影响整体系统的运行速度,并且当用户再次激活这些进程时,提升了进程的启动速度。
如果你懂java,就会更容易理解Android系统的内存管理机制。与java的垃圾回收机制类似,系统有一个规则来回收内存。进行内存调度有个阈值,只有低于这个值系统才会按一个列表来关闭用户不需要的东西。
Android系统有六类进程:
前台进程、可见进程、次要服务、后台进程、内容供应节点、空进程。
对于高手而言可以用MinFreeManager之类的软件进行进程管理,
分别为六类进程设定不同的阈值来操纵系统的内存分配机制。不过对于一般用户而言,Android系统默认的分配机制已经可以满足使用需要,因此也不需要再去调整。
对于一些内存很低的低端Android机而言,系统默认的内存分配机制无法实现很完善的内存调配。
所以在运行大型游戏时需要先清理一下内存。然而对于我们的DEFY而言,512m的总内存和几十m的空余内存已经可以充分的满足系统自动调配的需要,因此完全没有必要老去杀进程、清内存。
有的兄弟说后台挂着程序很费电,事实上Android的应用在被切换到后台时,它其实已经被暂停了,并不会消耗cpu资源,只保留了运行状态。
至于QQ、音乐播放之类的程序可以在后台运行,是因为这些程序在后台开启了服务,而服务可以后台运行,所以没有带服务的应用在后台是完全不耗电的,没有必要关闭。
这种设计本来就是一个非常好的设计,下次启动程序时,会更快,因为不需要读取界面资源。
Android系统这样的设计不仅非常适合移动终端的需要,而且减少了系统崩溃的可能,确保了系统的稳定性。
老想着清理内存的同学完全是因为被塞班或者Windows毒害太深,事实上,经常用Taskiller之类的软件关闭后台所有进程,很容易造成系统的不稳定。很多时候出现问题,只要重启就能解决,其原因也在于此。
说了这么多,总结起来很简单,牛B的人自己去操纵系统内存分配的阈值,而普通用户则是想怎么用就怎么用,完全不用去鸟剩余内存的问题,那些内存清理的程序完全可以扔到一边了。
1.按home退出,程序保留状态为后台进程;按返回键退出,程序保留状态为空进程。空进程的oom_adj评值高于后台进程,更容易被系统清理。所以推荐用返回键退出。
2.UC、愤怒小鸟、都市赛车之类程序本身提供关闭功能的,还是尽量主动关闭。浏览器、电子市场、opera mini等不提供关闭功能的,直接返回键退出就行。
我想每个人第一次用Android的时候,不可避免的会去装个任务管理器,然后对里面时刻都停留着一大堆的程序表示触目惊心,然后会在桌面上建立一个快捷清空内存的按钮,时不时啪的按一下,看着内存剩余数量从30多变成100多然后很有快感...
其实吧,Android是Linux的内核,每一个程序都是一个独立的JAVA虚拟机,就和油汤里的油花一样互不干扰,这样充分保证了万一某个程序的JAVA虚拟机崩溃,系统依旧稳定正常运行.
而Android和传统Linux不一样的地方又在于,传统Linux在进程活动停止后就结束了,这就类似于我们用S60和WM一样,关闭程序,内存释放.而Android会把这些进程保留在内存里,干嘛呢?为了保证你再次激活这些进程时候启动的更快,比如说我们挂在桌面的Widgets,
具体一点我们拿新浪微博举例吧.我刚看完,退出,突然我想我发一条微博吧,
那么这个时候我可以直接在桌面Widgets上操作----设想一下如果我退出的时候这个进程就终止了,那么我在桌面上点击Widgets的时候会不会卡顿一下甚至没有响应?
----这就跟我们把Widgets挂在桌面的行为完全背离了,放在桌面上就是为了能随时观察到程序运行的情况,
以及随时可以快速调用程序.所以Android并没有在进程活动停止就释放对应的内存.那么也许你还是会有疑问,那么内存够不够用呢?
512的内存被我用的只剩56M是不是很恐怖?其实系统一点也不卡的,蛋定蛋定
是的,我理解,因为大家这么多年Windows都用习惯了,Windows内存不足的时候机器卡的会让你想砸掉机箱,而且调用虚拟内存的时候硬盘喀喀喀想的让你肉疼.
你肯定也会怕你的手机明明512M内存结果就剩下30来M把你卡到崩溃.事实上呢,Android会在系统需要更多内存的时候,去释放掉那些占用内存的进程----
这个活动是智能的.最早大家认为是有个排序,比如最近使用过哪些程序(LRU机制,Last Recently Used),然
后结束最早的进程.不过并非如此,否则就变成我们上小学时候那样,个子高的块头大的男生跟班长下去拔草扛新书,女生们留在班里绣花吧...
这样很明显不公平而且没准会结束掉那些我们并不想结束掉的进程----譬如说这会儿我想切回到刚才后台的网页继续浏览结果悲怆的发现它被系统给我强制关闭了...
Android把进程分成了一些优先级,比如
前台进程(Foreground),比如我们正在看书,那么看书的程序就是前台进程,这些进程是不会被系统优先结束的.当我把它切到后台的时候,它就变成后台进程了.
  还有可见进程(Visible),这个怎么说呢,譬如输入法程序,你平时是看不见它的,但是在你打开输入界面的时候,它会很快的弹出来,而不是让你等啊等啊等,看不到的原因是透明度的机制,咱就不要钻牛角尖讨论为啥我看不见了...还有桌面的Widgets,比如我们的桌面时钟,这个东西就是可见的,如果它被系统终止了会有什么样的结果?这个Widgets依然会显示在桌面上,但是时针不走了...
  主要服务,比如说,电话的拨号功能,你也不想正急着打电话呢结果人家给你卡半天吧,尤其像我这样联系人上2000的,载入一遍真的很慢啊...所以这些主要服务平时也不会被系统自动结束,除非你非要关它,关了也会自己重新加载的.这也是你完全释放内存以后过一会就看着内存可用值又慢慢降低的原因.
  次要服务(secondary server),诸如谷歌企业套件,Gmail,联系人,看着这些程序出现在任务管理器里可能你会非常的莫名其妙,丫的这都哪跟哪啊我没开啊...其实它们和一些系统功能也是息息相关的,比如Gmail的邮件推送,我们时常需要用到它们,所以系统也太会去终止它们.甚至于HTC机器上著名的HTC Sense,这个也是次要服务,但是其实它承接着整个系统界面的运行,所以,如果你强行关闭所有进程的时候,你的屏幕会变成一片白...然后慢慢等HTC Sense加载.
  后台进程(hidden),就是我们通常意义上理解的启动后被切换到后台的进程,比如如浏览器和阅读器.后台进程的管理策略有多种,但是一般来讲,系统都会视内存情况,尽可能多的保留后台程序,这样会影响到你启动别的程序的运行速度----我想这个很好理解,因为内存确实不够了,而且你还没让系统自动释放内存.但好处是,你再次切换到这些已启动的程序时几乎是无缝的,速度绝对比你从0开始启动它要快得多.所以,这种后台进程在内存极度不够的时候,肯定会被系统选择性的干掉的.
内容供应节点(content provider),没有程序实体,仅提供内容供别的程序去用的,比如日历供应节点,邮件供应节点等.在系统自动终止进程时,这类程序享有优先的**掉权...
 空进程(empty),
没有任何东西在内运行的进程,有些程序在退出后,依然会在进程中驻留一个空进程,这个进程里没有任何数据在运行,作用往往是提高该程序下次的启动速度或者记录程序的一些历史信息.这部分进程无疑是系统最先终止的.
说了这么多,其实还是要结合实际的程序来看一下的,比如Android这个很有名的自动内存调配的软件,Auto Memory Manager,它的设置和帮助界面就如上面所说的,它自动提供了多种默认配置,例如极速模式,这个模式下,会帮助你在设定好的临界值区间上,结束空进程以及内容供应节点等等低优先级保留权的进程,来给你腾出更多的内存,加速新运行程序打开的速度,但是它也说明了这种模式的弊端,就是一些可能你不想被关闭的进程会被过早的关闭,比如说,闹钟----在G2 G3还很火爆的2009年,很多用户在买完手机后给我抱怨,哎呀这个机器闹钟怎么老不响啊...上班老迟到...其实这就是因为手动结束进程的时候结果把闹钟也给干掉了.系统的时间是会一直走的,这属于主要服务,而闹钟呢,只是主要服务的一个附属品,所以被结束后,是不会自动被启动的,既然没有启动自然就不会响了.
财富值 1107
交易信用 0
原创小红花 0
积分/帖子:2327
连续签到天数:1
全部签到天数:220
注册时间:
手机型号:
状态: 离线
screen.width*0.7) {this.resized= this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized= this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {} else {window.open(this.src);}" onmousewheel="return imgzoom(this);" alt="" />
交易信用 0
原创小红花 0
积分/帖子:190
连续签到天数:4
全部签到天数:5
注册时间:
手机型号:
来自:江苏
状态: 离线
财富值 2531
交易信用 0
原创小红花 0
积分/帖子:1849
连续签到天数:3
全部签到天数:3
注册时间:
手机型号:
来自:陕西
状态: 离线
支持年华……支持年华……支持年华……支持年华……支持年华……支持年华……支持年华……支持年华……支持年华……支持年华……
UID 5607556
财富值 704
交易信用 0
原创小红花 0
积分/帖子:324
连续签到天数:1
全部签到天数:369
注册时间:
手机型号:
状态: 离线
真是不如塞班成熟,混乱的安卓系统
财富值 2531
交易信用 0
原创小红花 0
积分/帖子:1849
连续签到天数:3
全部签到天数:3
注册时间:
手机型号:
来自:陕西
状态: 离线
支持年华……支持年华……支持年华……支持年华……支持年华……支持年华……支持年华……支持年华……支持年华……支持年华……
交易信用 0
原创小红花 0
积分/帖子:25
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
状态: 离线
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
交易信用 0
原创小红花 0
积分/帖子:15
连续签到天数:2
全部签到天数:2
注册时间:
手机型号:
状态: 离线
恩,确实是傻了,以后注意,呵呵
交易信用 0
原创小红花 0
积分/帖子:15
连续签到天数:1
全部签到天数:7
注册时间:
手机型号:
状态: 离线
长知识了。长知识了。
交易信用 0
原创小红花 0
积分/帖子:87
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
状态: 离线
交易信用 0
原创小红花 0
积分/帖子:9
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
状态: 离线
财富值 2910
交易信用 0
原创小红花 0
积分/帖子:1248
连续签到天数:17
全部签到天数:770
注册时间:
手机型号:
状态: 离线
这么专业啊,顶个
财富值 810
交易信用 0
原创小红花 0
积分/帖子:460
连续签到天数:6
全部签到天数:290
注册时间:
手机型号:
状态: 离线
感谢楼主热心而又精彩的分享
微信扫一扫关注dospy当前位置: >
安卓内存机制详解 别清理释放RAM损害你的手机
安卓内存机制详解 别清理释放RAM损害你的手机
14:19|编辑:谜团|来源:265G安卓网
许多人喜欢在手机里面安装一个一键清理或者是XX优化大师。不知道大家有没有觉得,在一键清理后,手机打开应用的速度反而没有清理前快。这是为什么呢?今天我就给大家讲一下的内存机制。
当一个程序放到后台时,系统可能将数据保存起来而让程序进行休眠,或者仅仅运行部分服务,仅仅当收到相关的申请时才恢复部分进程,处理完之后结束进程而保留服务&&这些都是自动处理的,也就是说,如果用户运行的软件都是按照Android思想而设计的,那么除了明确有退出按键的一部分大型程序外,其他程序是都可以运行后扔到后台不用再管了的,当某个程序需要更多RAM时,系统会自动释放掉一些不重要且最近没有使用的程序;而当你打开某个曾经打开的程序时,系统会先检查RAM里是不是有这个程序的部分进程,然后进行恢复,这样可以更快打开它。
当然了,如果智能手机本身RAM很小而且CPU不给力,系统自然会很频繁的终止进程释放内存,这就使得许多小内存的手机用起来感觉一卡一卡的了。于是很多论坛都开始讨论怎么样使得全杀过后空闲内存更大、怎样禁止自动启动某些进程&&结果空闲RAM确实大了,用起来反而更卡了&&随便切换个程序(如看书的时候来了个电话)系统都要重新启动几乎所有相关的进程,怎么能反应不迟钝。
Android用RAM的方式,跟Windows、Windows Phone、Symbian是两回事。在Android里,RAM被用满了是件好事。它意味着你可以快速打开之前打开的软件,回到之前的位置。所以Android很有效的使用RAM,很多用户看到他们的RAM满了,就认为拖慢了他们的手机。而实际上,退出后重启这些程序才真正拖慢了手机的响应。而且这些自动杀进程的软件本身是个时刻活跃的进程,它始终在后台保持活跃使得CPU难以消停,反而增加了耗电量。
这个问题最终我觉得应该埋怨程序员。许多国内的Android程序员编写的程序根本就没有对进程进行分类,总是试图将所有进程都保留在内存里(例如某著名手机浏览器)!这就使得这些程序即使放到后台了,它也不许系统对其进程进行释放。WM、Sybiam系统里的内存管理没有这么智能,于是习惯了这种方法的程序员以及用户就把这种内存管理方式和使用习惯用到了Android上。所以这里建议,对于很多国内软件,用完之后还是按一下退出吧,而对于规范化的程序,以及系统自带的那些程序(例如谷歌程序基本都没有退出),用过之后放后台就好。
1.养成良好的软件使用习惯,不用了就退出(左键菜单退出、亦或程序关闭按钮、亦或直接右键返回桌面,切忌中间HOME键!)
2.关闭第三方杀软不必要的防火墙(比如来电防火墙、短信防火墙、邮件防火墙,前提你不是专门做电子商务的,一般情况下哪有那么多骚扰)别盲目的认为全部开启是最安全的,要知道每道防火墙就是一个常驻进程,一直处于活跃状态,撇开RAM不谈,耗电量也不容小视!
关注265G安卓网官方微信获取第一手数码资讯;也可加入数码QQ群,与小伙伴们交流玩机心得。
用微信扫描上方二维码,或搜索微信号anzhuo265g关注265G安卓网微信公众平台。
用手机QQ扫描上方二维码,或搜索QQ群号加入265G安卓网QQ群。也可点击:
扫描加入265G安卓网微信公众平台,第一时间获取智能手机资讯。
6月30日下午15点,华为荣耀7将正式发布,这款手机或将搭载华为海思麒麟940处理器,性能大幅度提升。
是游戏网推出的一款专门为热衷手机网游用户量身定制的游戏助手。
0102030405安卓系统内存的使用机制是怎样的?_百度知道
安卓系统内存的使用机制是怎样的?
提问者采纳
在一键清理后,手机打开应用的速度反而没有清理前快。不知道大家有没有觉得许多人喜欢在手机里面安装一个一键清理或者是XX优化大师。 当一个程序放到后台时。这是为什么呢?下面就给大家讲一下安卓的内存机制
其他类似问题
为您推荐:
安卓系统的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁安卓系统内存的使用机制是怎样的?_百度知道
安卓系统内存的使用机制是怎样的?
提问者采纳
多人喜欢在手机里面安装一个一键清理或者是XX优化大师,手机打开应用的速度反而没有清理前快。 当一个程序放到后台时。这是为什么呢?下面就给大家讲一下安卓的内存机制。不知道大家有没有觉得,在一键清理后
其他类似问题
为您推荐:
安卓系统的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 安卓内存管理机制 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信