安卓手机的内存问题_第1页
安卓手机的内存问题_第2页
安卓手机的内存问题_第3页
安卓手机的内存问题_第4页
安卓手机的内存问题_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、不用在意剩余内存的大小.其实很多人都是把使用其他系统的习惯带过来来了.安卓android大多应用没有退出的设计其实是有道理的,这和系统对进程的调度机制有关系.如果你知道java, 就能更清楚这机制了.其实和 java 的垃圾回收机制类似,系统有一个规则来回收内存 .进行内存调度有个阀值,只有低于这个值系统才会按一个列表来关闭用户不需要的东西 .当然这个值默认设置得很小,所以你会看到内存老在很少的数值徘徊.但事实上他并不影响速度 .相反加快了下次启动应用的速度.这本来就是安卓android标榜的优势之一,如果人为去关闭进程,没有太大必要.特别是自动关进程的软件. 到这里有人会说了,那为什么内存少

2、的时候运行大型程序会慢呢?其实很简单 ,在内存剩余不多时打开大型程序,会触发系统自身的调进程调度策略,这是十分消耗系统资源的操作,特别是在一个程序频繁向系统申请内存的时候.这种情况下系统并不会关闭所有打开的进程,而是选择性关闭,频繁的调度自然会拖慢系统.所以 ,论坛上有个更改内存阀值的程序可以有一定改善 . 但改动也可能带来一些问题,取决于值的设定. 那么 ,进程管理软件有无必要呢?有的 .就是在运行大型程序之前,你可以手动关闭一些进程释放内存 ,可以显著的提高运行速度.但一些小程序,完全可交由系统自己管理.谈到这里 ,可能有的朋友会问,如果不关程序是不是会更耗电.我就说说安卓 android

3、后台的原理 ,你就明白了 .安卓 android的应用在被切换到后台时,它其实已经被暂停了 ,并不会消耗cpu 资源 ,只保留了运行状态.所以为什么有的程序切出去重进会到主界面 .但是 ,一个程序如果想要在后台处理些东西,如音乐 播放 ,它就会开启一个服务.服务可在后台持续运行,所以在后台耗电的也只有带服务的应用了.这个在进程管理软件里能看到 ,标签是 service. 至于广播什么的我就不涉及了.所以没有带服务的应用在后台是完全不耗电的 ,没有必要关闭.这种设计本来就是一个非常好的设计,下次启动程序时,会更快 ,因为不需要读取界面资源,何必要关掉他们抹杀这个安卓android的优点呢 ? 还

4、有一个 .为什么安卓android一个应用看起来那么耗内存.大家知道 ,安卓 android上的应用是 java, 当然需要虚拟机,而安卓 android上的应用是带有独立虚拟机的,也就是每开一个应用就会打开一个独立的虚拟机.这样设计的原因是可以避免虚拟机崩溃导致整个系统崩溃 ,但代价就是需要更多内存. 以上这些设计确保了安卓android的稳定性 ,正常情况下最多单个程序崩溃,但整个系统不会崩溃 ,也永远没有内存不足的提示出现.大家可能是被windows毒害得太深了 ,总想保留更多的内存,但实际上这并不一定会提升速度,相反却丧失了程序启动快的这一系统特色,很没必要 .大家不妨按我说的习惯来用

5、用这个系统.最后推荐一款进程管理软件,systempanel,market上能搜到 ,界面友好启动快,功能也不错 ,用于手动关闭进程很好的软件 . 祝大家玩机愉快,这系统开十天半个月都没问题,不是 windows. 至于为什么开了大程序或者开了好几个程序之后切换会变慢,我的理解如下 : 1. 大程序 a 已经开启 ,占用 70% 内存 ,如果再想运行一个b, 需要 50% 的内存 ,则就需要一个将 a 从内存中释放或者压缩的过程,所以表现出来的就是慢一会儿2.abcde共占用内存 80%, 运行新程序z 需要20% 的内存 ,系统内存因为没见过剩余0的时候 ,也就是应该剩一部分空闲内存,那么就

6、需要从 ae这几个程序中选择一个或者几个来关闭,这一过程也需要耗费系统资源,所以会慢一会儿3. 也就是说你手动去杀程序的时候,就是替系统在释放内存,就算你不杀 ,在需要内存的时候系统也会自动释放. 4. 不在后台运行的程序(没服务的),即使不杀也不会耗电.在后台运行的(有服务的)程序 ,如后台放歌 ,当然会耗电 . 5. 不是说杀进程没用,不然作者就不会推荐进程管理软件了.哪个带服务耗电哪个后台一直在运行 ,看服务就能看出来,这样的该杀 . 6, 以 qq 举例 ,正常的退 ,会在进程管理里留下qq 的运行状态 ,但不耗电不占cpu, 如果你只是切换出去(按小房子而不是退出)那么自然会耗电,因

7、为程序还在运行. (qq 后台一样后台就是 qq 正常退出的时候和别的软件一样不完全退出会在内存里留着但是不占cpu 不费电再次启动就会非常快了这就是为什么android 能超越wm6 的系统的原因)简单的说说房子键和退出键的区别,轻度研究手机的内存管理! !在运行一个程序时,按一下房子键就可以退到桌面,一般来说按一下退出键也可以退到桌面,这两者有什么区别呢?其实是有区别的,你应该根据自己的需要灵活选择按房子键, 看起来似乎是退出了,但是其实这个软件并没有被关闭,而是转为了后台程序(指一般的软件,不讨论特别种类的软件)按退出键, 看起来也是退出没错,但这个软件其实是被转为了空置程序(音乐除外,

8、音乐属于有服务的特殊软件)咱们再来看看下图,是 android的所有 5个程序进程的级别高低,空进程是最低的,它存在的目的是为了下次打开这个软件的时候可以更加方便快速(这是个很好的设计目的),而一旦需要清理出更多内存空间时,它也是被系统自动的最优先清除的系统进程级别图,级别越低的会越快越早的被系统智能清理掉所以,大家明白了吧?一旦需要退出软件时,如果是没有提供退出功能的软件,那么尽量用退出键退出而不是房子键, 并且, 最重要的是, 没有必要用进程管理类软件主动去清理空置进程,因为它本来就是为了被清理而存在,但在没轮到它被清理之前,还可以发挥重新快速开启的作用,一旦被你主动清理了,就连这点好处都

9、没有了,那么, android系统的设计师又何必要设计出这个空置程序呢?直接释放内存不是更好么?所以,结论就是, 既然它存在, 就有它存在的好处!就要让我们享受到这个好处!用进程管理主动去清除空置程序绝对是违反android系统的设计本意的,是一种可笑的傻做法!再来说说房子键众所周知, android跟 iphone不同,咱们的gphone是一个典型的多任务系统,既然是多任务系统,那么自然就会有一个在多任务之间切换的需要,那么大家是否真的都会这个操作呢?这时候, 就需要用到房子键了,在一个程序中的时候,比如短信息, 看到几个单词不认识,那么就可以选中这段文字,然后复制,按房子键切换到桌面,然后

10、打开词典,粘贴,查询,查好后再长按房子键(长按的作用是在几个打开的程序和最近曾打开的程序之间切换),切换回短信息, 这时候短信息程序不需要重新打开仍然是你刚才的界面,可以再复制然后长按切换词典继续查询下一个单词。 。 。这就是房子键的用法,其实想必大家都知道这个用法,只不过可能没有考虑过其实这是一个前后台程序之间切换的过程而已。 。最后,简单的归纳一下所有内容,其实整篇文章的意思就是说,按退出键相当于“ 真正的” 退出关闭程序,按房子键,看起来似乎是关闭了程序,但是其实只是一种假象,程序只是被降低了仅仅“ 一” 个等级而已,房子更适合多任务切换用,就这么简单。 。关于 android内存管理的

11、原理,及相关自动内存管理软件原理android采取了一种有别于linux的进程管理策略,有别于linux的在进程活动停止后就结束该进程,android把这些进程都保留在内存中,直到系统需要更多内存为止。这些保留在内存中的进程通常情况下不会影响整体系统的运行速度,并且当用户再次激活这些进程时,提升了进程的启动速度。那 android什么时候结束进程?结束哪个进程呢?之前普遍的认识是android是依据一个名为lru (last recently used 最近使用过的程序)列表,将程序进行排序,并结束最早的进程。xda 的楼主又进一步对这个管理机制进行研究,有了如下发现:1. 系统会对进程的重要

12、性进行评估,并将重要性以“ oom_adj” 这个数值表示出来,赋予各个进程; (系统会根据“ oom_adj” 来判断需要结束哪些进程,一般来说,“ oom_adj”的值越大,该进程被系统选中终止的可能就越高)2. 前台程序的 “ oom_adj” 值为 0,这意味着它不会被系统终止,一旦它不可访问后,会获得个更高的 “ oom_adj” , 作者推测 “ oom_adj” 的值是根据软件在lru 列表中的位置所决定的;3.android不同于 linux ,有一套自己独特的进程管理模块,这个模块有更强的可定制性,可根据 “ oom_adj” 值的范围来决定进程管理策略,比如可以设定“ 当内

13、存小于x 时,结束 “ oom_adj” 大于 y 的进程 ” 。这给了进程管理脚本的编写以更多的选择。4.android将进程分为六大类:1. 前台进程( foreground) :目前正在屏幕上显示的进程和一些系统进程。举例来说,dialer storage,googlesearch等系统进程就是前台进程;再举例来说,当你运行一个程序,如浏览器 ,当浏览器界面在前台显示时,浏览器属于前台进程(foreground) ,但一旦你按home回到主界面, 浏览器就变成了后台程序(background) 。我们最不希望终止的进程就是前台进程。2. 可见进程( visible ) :可见进程是一些不

14、再前台,但用户依然可见的进程,举个例来说: widget、输入法等,都属于visible 。这部分进程虽然不在前台,但与我们的使用也密切相关,我们也不希望它们被终止(你肯定不希望时钟、天气,新闻等widget被终止,那它们将无法同步,你也不希望输入法被终止,否则你每次输入时都需要重新启动输入法)3. 次要服务( secondary server ) :目前正在运行的一些服务(主要服务,如拨号等,是不可能被进程管理终止的,故这里只谈次要服务),举例来说:谷歌企业套件,gmail 内部存储, 联系人 内部存储等。这部分服务虽然属于次要服务,但很一些系统功能依然息息相关,我们时常需要用到它们,所以也

15、太希望他们被终止4. 后台进程( hidden ) :虽然作者用了hidden这个词,但实际即是后台进程(background) ,就是我们通常意义上理解的启动后被切换到后台的进程,如浏览器,阅读器等。 当程序显示在屏幕上时,他所运行的进程即为前台进程(foreground) ,一旦我们按 home返回主界面(注意是按home ,不是按back ) ,程序就驻留在后台,成为后台进程(background) 。后台进程的管理策略有多种:有较为积极的方式,一旦程序到达后台立即终止, 这种方式会提高程序的运行速度,但无法加速程序的再次启动;也有较消极的方式, 尽可能多的保留后台程序,虽然可能会影响到

16、单个程序的运行速度,但在再次启动已启动的程序时,速度会有所提升。这里就需要用户根据自己的使用习惯找到一个平衡点5. 内容供应节点(content provider) :没有程序实体,进提供内容供别的程序去用的,比如日历供应节点,邮件供应节点等。在终止进程时,这类程序应该有较高的优先权6. 空进程( empty) :没有任何东西在内运行的进程,有些程序,比如bte ,在程序退出后, 依然会在进程中驻留一个空进程,这个进程里没有任何数据在运行,作用往往是提高该程序下次的启动速度或者记录程序的一些历史信息。这部分进程无疑是应该最先终止的。实践说完理论, 说些实践的东西,怎样管理这六类进程,如何来设置

17、进程管理模块是这部分说的内容。首先是软件,推荐使用minfreemanager,市场上就有下载,用于设置这六类进程的管理策略。软件运行后有六个输入框,在输入框中只能输入数字,这些数字代表了这类进程的处理策略,比如foreground app 下的输入框显示6,就表示,当可用内存低于6mb 时,终止foreground app。下面的类似,如empty app 下的输入框显示24 ,则表示,当内存低于24mb时,终止empty app 。从软件数值的设置不难看出结束进程的有限顺序:emptycontent providerhiddensecondary servervisibleforegrou

18、nd。但默认设置确存在一些问题:各类进程的管理策略的阀值相当接近:6,8,16 , 20 ,22 ,24 ,最大的相差也不到8mb ,在实际程序运行中,很容易导致多种类型的进程同时被关闭。如可用内存在25 时,突然启动照相程序,系统可用内存急速,可能会导致空进程、内容供应节点、后台进程、次要服务等同时被关闭阀值上限较低:一般手机启动后,可用内存在50-100左右,但随着手机的使用,可用内存会逐步减少,最后降低到24mb左右,则系统开始启动进程管理机制,开始结束进程,但这个阀限制设在了24mb ,相对来说偏低。其结果会导致系统使用一段时间后,整体速度变慢。很明显的就是,当手机长时间使用后,开启电

19、话 拨号,相册,照相机等应用时,系统的反应速度极慢。基于以上几个问题,不难看出,我们修改的目标也将非常明确,主要解决两个矛盾:拉开各进程的阀值层次,使得进程管理机制能更有效得工作提升阀值上限,空出更多的空余内存,以提升系统整体的运行速度进程管理策略设置原则:前台进程、 可见进程和次要服务是与用户体验息息相关的内容,这部分的进程管理策略要相对保守,给这些进程留下足够的运行空间压榨无用进程,腾出内存空间给主要程序使用下面笔者总结了几种设置方式,适应不同的使用需要:游戏 玩家 / 重度浏览器使用者配置:用户特点:长时间专注于某一特定的,高内存需求的程序,对多任务的需求不高配置参数:1.foreground: 6 2.visible:8 3.secondary server : 16 4.hiden app:80 5.content provider:90 6.empty:100 配置理念: 压榨后台进程, 内

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论