手提式有线电话机总是轻巧满内部存储器

时间:2019-10-19 23:38来源:科技产品
问:手机总是容易满内存,到底是什么在占内存?手机总是容易满内存,到底是什么在占内存,该怎么清理? Android内存管理机制 [转载自大果仁Pareto 的android内存管理机制] 1、基于L

问:手机总是容易满内存,到底是什么在占内存? 手机总是容易满内存,到底是什么在占内存,该怎么清理?

Android内存管理机制  [转载自大果仁Pareto 的 android内存管理机制]

图片 1

1、基于Linux内存管理

问这个问题,应该是Android手机的玩家吧,而且你对Android的内存机制也不了解,简单来说,Android中的内存就是给你用的,不用还不正常,根本不用担心内存怎么只剩下几百M呢。

  Android系统是基于Linux 2.6内核开发的开源操作系统,而linux系统的内存管理有其独特的动态存储管理机制。不过Android系统对Linux的内存管理机制进行了优化,Linux系统会在进程活动停止后就结束该进程,而Android把这些进程都保留在内存中,直到系统需要更多内存为止。这些保留在内存中的进程通常情况下不会影响整体系统的运行速度,并且当用户再次激活这些进程时,提升了进程的启动速度。

像我们这些在Windows陪伴下成长起来的玩家,“内存不足”经常遇到,但是Android有着与Windows完全不一样的内存管理机制,Windows上的那一套,对Android并没用。

2、Android内存分配机制

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

  与java的垃圾回收机制类似,系统有一个规则来回收内存。进行内存调度有个阈值,只有低于这个值系统才会按一个列表来关闭用户不需要的东西。Android系统有六类进程:前台进程、可见进程、次要服务、后台进程、内容供应节点、空进程。有内存管理需求的人可以用MinFreeManager之类的软件进行进程管理,分别为六类进程设定不同的阈值来操纵系统的内存分配机制。不过对于一般用户而言,Android系统默认的分配机制已经可以满足使用需要,因此也不需要再去调整。

Windows中一旦程序被关闭,分配的内存也就释放出来,然而在Android中运行过的应用绝大多数是从前台转入到后台,并保留在内存中并不会也不需要主动释放,这样下次再运行该应用时,可以更快的启动。

  对于一些内存很低的低端Android机而言,系统默认的内存分配机制无法实现很完善的内存调配。所以在运行大型游戏时需要先清理一下内存。然而对于我们的ANDROID系统的手机而言,几百m的总内存和几十m的空余内存已经可以充分的满足系统自动调配的需要,因此完全没有必要老去杀进程、清内存。

无论手机的物理内存有多大,Android都能将其充分利用,将需要用到的数据从硬盘读入到内存,以提高数据访问性能,也就是说,在Android系统中,可用内存越小,表明其调用的数据就越多,访问的命中率就越高,系统也就越快。

有人认为后台挂着程序很费电,事实上Android的应用在被切换到后台时,它其实已经被暂停了,并不会消耗cpu资源,只保留了运行状态。至于QQ、音乐播放之类的程序可以在后台运行,是因为这些程序在后台开启了服务,而服务可以后台运行,所以没有带服务的应用在后台是完全不耗电的,没有必要关闭。这种设计本来就是一个非常好的设计,下次启动程序时,会更快,因为不需要读取界面资源。

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

  Android系统这样的设计不仅非常适合移动终端的需要,而且减少了系统崩溃的可能,确保了系统的稳定性。老想着清理内存的同学完全是因为被塞班或者Windows毒害太深,事实上,经常用Taskiller之类的软件关闭后台所有进程,很容易造成系统的不稳定。很多时候出现问题,只要重启就能解决,其原因也在于此。

Android有着优秀的内存回收机制

  总之,牛B的人自己去操纵系统内存分配的阈值,普通用户则是想怎么用就怎么用,完全不用去鸟剩余内存的问题,那些内存清理的程序完全可以扔到一边了。对于如果有同学真的那么喜欢看着自己手机的剩余ram很大的话,可以用autokiller之类的工具,这类工具的原理不是杀进程,而是分配系统内存阈值,很简单很好用。

Android使用了一个名为Low Memory Killer(LMK)的机制来管理内存,当内存出现不足时,LMK就开始挥舞屠刀杀掉一些进程以获得新的内存空间。

3、手机慢的真正原因——CPU

Android有一套独特的进程管理,它会以oom_adj来表示进程的重要性,oom_adj的值越小,则重要性越高,oom_adj的值越大,该进程被系统选中杀掉的可能性越高。

  在Android里,进程和程序是两回事,程序可以一直保留在系统里,但是没有任何进程在后台“运行”,也不消耗任何系统资源。所有的程序保留在内存中,所有可以更快的启动回到它之前的状态。当你的内存用完了,系统会自动帮你杀掉你不用的任务。

Android默认的进程管理策略

  需要明白的是,Android用RAM的方式,跟windows啥的是两回事。在Android的世界里面,RAM被用满了是件'好'事。它意味着你可以快速打开之前打开的软件,回到之前的位置。所以Android很有效的使用RAM,很多用户看到他们的RAM满了,就认为拖慢了他们的电话。而实际上,是你的CPU——当你的软件真正运行时用到的东东——才是拖慢手机的瓶颈。

为了更好的评估进程的重要性,Android将进程分为六类,如下所述:

4、进程管理软件=祸害?

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

  很流行的各种进程管理软件都说帮你释放内存是件好事,但这是不正确的。打开这些软件时,他们告诉你“运行”的软件和杀死他们的方法。你也可以在“服务”里面看到到底程序的哪些部分在“运行”,占用了多少内存,剩余多少内存。所有的这些都告诉你,杀掉这些程序能够释放内存。但是这些软件都没有告诉你这些程序到底消耗了多少CPU时钟,而仅仅告诉你能释放多少内存。要知道,用满了内存实际上是件好事,我们要注意的是CPU,真正消耗你的手机资源,消耗电池的东东。

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

  因此,杀掉程序通常是没有必要的(尤其是用"autokill"方式杀掉程序)。更严重的是,这样做会更快的拖垮你的手机能力和电池性能。不管是手动杀掉进程,还是自动的杀掉进程,重新打开程序,你实际上是在用CPU资源来做这件事。

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

  事实上,这些进程管理软件消耗了系统资源。而且,这些软件会莫名其妙的杀死其他程序造成乱七八糟的结果(尤其对些小白来说)。所有的这些,告诉我们,你的手机在用它自己的方式工作,特别是你只是个小白用户,用这些进程管理软件耽误的事情比得到的要多。

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

5、善用快速启动

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

  这么说吧,各种程序开发水平是不一样的。很多人以前或者现在使用这些进程管理软件,释放内存,感觉手机快了那么一点。造成这个问题的原因是,你用的软件本身程序写得太烂了,比如,有得程序完全没有必要联网时,还在联着。这个时候,杀掉这些程序,你能得到好处,就是说,只有你知道你在干什么得时候,杀掉让你爱但是很烂的程序才能帮上你。

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

  事实上,很多开发者,包括ROM开发者,如果用了进程管理程序,当你提交bug报告时,看都不会看一眼(Cyanogen时这么干的,我不知道MIUI是不是),所以能不用就不要用了,除非你真的知道你在干什么。

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

  如果你真关系你的手机的表现和进程,还是多关注下系统进程,看看里面说各种程序都消耗了多少资源,如果某个程序消耗太多,时不时杀掉它可能会有那么一点帮助。

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

  总的来说,进程管理软件正确的用途是杀那些出错的程序、会导致死机有BUG的进程以及疑似病毒进程等,而不是一味地追求内存空得多程序在内存里放着,CPU不调用,它就是死的,一般程序你退出了它就不再运行了,不占用CPU资源(占用了CPU时间这个才是要耗电的),这就是2.2以上版本系统那个“快速启动”的工作原理。

那么Android手机到底要不要清内存?结论是:不需要!其实这个结论也适用iPhone手机。

6、再说进程管理

一般如果是安卓手机的话,如果手机内存较小,很容易出现内存不够用的情况。安卓系统、应用厂商的服务、手机应用等都会占用大量的内存,由于国内手机厂商深度定制的安卓系统,普遍存在全家桶,大量的服务和应用存在自启和连环唤醒情况,大量消耗用户内存,造成手机内存占用过高,严重影响了用户的使用体验。而反观国外很多采用原生安卓系统的手机,虽然内存并不大,但内存的占用率却极低,实际的应用体验却更优秀。所以国内手机厂商的全家桶,是造成手机内存占用率较高的主要原因。一般可以通过手机助手清理内存,禁止应用自启,卸载无用应用等方法解决手机内存占用较多的问题。

  为什么内存少的时候运行大型程序会慢呢?其实很简单,在内存剩余不多时打开大型程序,会触发系统自身的调进程调度策略,这是十分消耗系统资源的操作,特别是在一个程序频繁向系统申请内存的时候。这种情况下系统并不会关闭所有打开的进程,而是选择性关闭,频繁的调度自然会拖慢系统。所以,论坛上有个更改内存阀值的程序可以有一定改善。但改动也可能带来一些问题,取决于值的设定。

国产手机系统全家桶导致手机内存占用过大

由于目前手机的硬件利润较低,很多国内手机厂商都是通过预装应用的方式,提升手机的利润。所以国产手机普遍存在以全家桶的方式,打包预装各种应用和服务,通常会在手机中进行自启,或者连环唤醒,占用了大量的手机内存,严重影响了手机用户的体验。

  那么,进程管理软件有无必要呢?有的。就是在运行大型程序之前,你可以手动关闭一些进程释放内存,可以显著的提高运行速度。但一些小程序,完全可交由系统自己管理。谈到这里,可能有的朋友会问,如果不关程序是不是会更耗电。我就说说安卓Android后台的原理,你就明白了。安卓Android的应用在被切换到后台时,它其实已经被暂停了,并不会消耗cpu资源,只保留了运行状态。所以为什么有的程序切出去重进会到主界面。但是,一个程序如果想要在后台处理些东西,如音乐播放,它就会开启一个服务。服务可在后台持续运行,所以在后台耗电的也只有带服务的应用了。这个在进程管理软件里能看到,标签是service。所以没有带服务的应用在后台是完全不耗电的,没有必要关闭。这种设计本来就是一个非常好的设计,下次启动程序时,会更快,因为不需要读取界面资源,何必要关掉他们抹杀这个安卓Android的优点呢?

手机内存占用过高,可以借助手机卫士清理内存

如果手机的内存占用过高,可以借助手机卫士等工具对手机的内存进行清理,对于不常用的手机应用进行卸载,提升手机的运行效率。另外也可以通过禁止手机应用的自启,来提升手机内存的使用效率,但对于手机存在应用连唤醒的情况,是无效的。所以手机卫士或管家,只能暂时解决手机内存占用过高的问题,无法从根本上解决问题。

7、内存管理中的虚拟机

使用第三方原生安卓系统,可大幅降低手机内存占用

目前的cm等第三方原生安卓系统,一般都不夹带国产手机厂商的全家桶,系统十分纯净,一般对于手机内存的占用都比较小。一般如果条件允许的话,可以刷第三方的原生安卓系统,提升手机内存的使用效率。

  还有一个。为什么安卓Android一个应用看起来那么耗内存。大家知道,安卓Android上的应用是java,当然需要虚拟机,而安卓Android上的应用是带有独立虚拟机的,也就是每开一个应用就会打开一个独立的虚拟机。这样设计的原因是可以避免虚拟机崩溃导致整个系统崩溃,但代价就是需要更多内存。

cm系统是老手机的救星

华为荣耀畅玩4,搭载的骁龙410芯片,仅配置了1g内存,可以说硬件配置十分渣,运行华为自带emui系统,内存占用极高,基本卡都没办法使用。但刷cm13系统后,竟然满血复活,运行普通应用十分流畅,完全可以当做备用机使用。这也充分说明,很多国产手机在硬件配置方面没有太大瓶颈,主要是国产手机系统的全家桶,占用大量内存,拖慢了整机的速度。

对于手机内存占用过大的问题,主要是由于安装和启动的手机应用较多,特别是很多国产手机的全家桶,占用和消耗了大量的手机内存,影响了手机的使用效率。一般可以通过手机卫士等工具,清理内存,禁止应用自启等方法解决手机内存占用过大的问题。如果想从根本上解决这个问题,更多的还是依靠手机厂商摒弃全家桶,推出类似cm的第三方原生安卓系统。如果条件许可的话,用户也可以刷cm等比较纯净的第三方安卓系统。

手机内存分为运行内存(RAM,简称运存)和存储内存(ROMZ)两种。运行内存比较少,手机一般4G和6G居多。存储内存较大,一般16G—512G,其中64G和128G居多。比如一款手机为“6+64G”的内存,就代表着6G的运行内存和64G的存储内存。

运行内存是为手机运行的程序服务的,换句话说,就是储存运行中的程序的这部分内存。手机不像电脑,当你退出一个程序后,这个程序不会直接关闭,而是在后台继续运行。就比如当你在下载一部电影的时候,你返回桌面或者打开其他软件,这部电影还在继续下载。

只有2G运存的安卓机相信不少人都用过,只要后台运行的程序一多,分分钟给你卡到原地爆炸。而反观只有1G运存的苹果却从来不会出现这种情况,这是因为两者的系统运行机制不同。苹果的ios系统对于后台运行的软件有很好的优化,系统只会分少量的资源给后台运行的应用。这样即保证了后台应用的运行,也不会耽误新程序的加载速度。而安卓系统就不同了,对于后台运行的程序没有限制,所以后台一多,马上变卡。

不过现在的安卓系统新增了一个叫Low Memory Killer(LMK)的后台程序管理机制。每当运行内存不足时,LMK都会自动关闭最不重要的后台程序来为新程序腾出运行内存和系统空间。所以现在的安卓机只要你不是开太多程序,4—6G的运行内存不会被占满。

存储内存相信大家更熟悉了,就是用来储存数据的内存。手机中每个文件、软件、图片、视频都需要占用存储内存。而且,随着手机的使用,系统中的垃圾文件会越来越多,更新的软件越来越大,导致内存不够用。在这个一个QQ、微信动辄几个G的时代,32G的手机内存是不够用了。笔者建议大家最好买64G以上的手机,并且定期恢复出厂设置。

不知道各位看官们的手机内存有多大呢?欢迎在下方评论留言,让更多人看到您的观点。如果觉得小编说的在理,请点赞转发关注我哦!

手机内存分为两部分,运行内存和存储内存。买手机时,一个型号的手机有很多套餐可以选择,比如6+64GB、4+128GB,前面的4GB,6GB就是运行内存,后者则是存储内存。

占用手机运行内存的主要是手机运行程序时被软件占用的内存,安卓手机的系统会把手机里说有的软件都放在后台运行之中,因为这样开启软件的时候会节约等待启动的时间,除非用户自己去设置关闭开机自动启动软件。

可运行内存一共就那么多,虽然现在新款手机的运行内存不断加大但随着软件的不断更新升级,占用的手机内存也会越来越大,这都是成正比的。为了清理软件占用的内存,安卓手机都会配备“一键清理”的功能去清理运行内存,这样可以使因为占用运行内存过多而变卡顿的手机流畅起来。

而占用存储内存的东西就有很多了,比如软件的数据缓存、微信qq的聊天记录、相册里的照片、下载的音乐视频、短信垃圾、手机随着系统升级,本身系统所占的内存也会越来越大,这些都会占用手机的存储内存。

其中最占用存储内存的就当属照片和微信了。那么该怎么看微信到底占用了多少内存呢?

点开微信中的[我]-[设置]-[通用]-[清理微信存储空间],等待几秒钟后就会显示占了多少内存了,如果你不经常清理,那这个数字一定会让你大吃一惊。然后点击下方的[管理微信聊天数据]清楚就好了。

存手打,希望能够帮到你!记得点赞!喜欢的有帮助的点赞啊!内存还是储存?内存与软件安装多少和后台运行多少有关!所以才有6g,8g内存手机的出现,小内存手机建议不用软件少装!尽量后台软件少点!这个可以在网上看到怎么清理后台软件!储存少可以将手机微信的图片视频自动保存功能关闭!还有自己手机拍照录像没事上传到电脑端!视频软件下载的视频看完后直接删除,这样基本就够用了!对于16,32个g的手机是这样!再不够用买好手机吧!建议64g起步,内存4个g起步,基本这个配置普通手机用户够用了!有特殊需求的除外

关闭一些没必要自动运行的软件,浏览器可以选择无图模式,音乐播放器可以关闭歌手图片显示,视频播放器要时刻的清理缓存,还有软件安装后自动删除安装包,游戏停止运行后,手动清理全盘缓存,QQ压缩包,文件管理器中可以找到,格式zip,如果你知道文件夹是哪个软件所有,觉得清理掉不会影响使用,就清理了,你会发现手机内存又多了至少2GB,不信你就试试吧

你说的是ram还是flash,如果是ram,程序就是尽可能的使用内存提高运行性能(这个天经地义),lOS会自行清后台进程,安卓不会,但有方法设置,可以逐个关闭不重要应用的后台运行,还可以点6下版本号打开开发者选项(安卓通用方式),在里面找到限定后台进程数量(一般1到4个,不限),选择限定个数即可,但不是什么手机都有这选项

如果你说的是flash,卸载微信吧。。。。。。

手机占用内存最大的就是系统和软件,系统方面你可以通过刷机来改变大小,可以在手官网(或者其他大神资源)找一个自己机型的精减刷机包, 软件方面你可以在安智市场里面下载历史版本,较小的软件包可以减轻手机内存压力,另外你还可以root手机,root后可以禁止软件自启,阻止软件相互唤醒,删除不需要的系统软件,一星期左右可以关机一次,彻底释放内存。

其实手机内存不外乎两种,一是各种APP的缓存,现代人基本离不开社交软件,随便几个APP的缓存加起来可能都已经超过1G了,这就需要经常清理软件缓存,可以借助360等其他的手机管家,一键清理很方便。

还有就是手机里面的照片,这块比APP缓存还要厉害,我的手机曾经几度内存不足都是因为照片太多了~~现在是专门下载了天翼云盘去保存照片,再者就是各种软件,如果不是必须用经常用的软件其实也可以清理掉,这些功夫做完之后内存应该会有一个很大的改变。

设置一下后台最多只同时打开三个或四个应用软件,其实安卓没有必要那么在乎还剩下多少内存,你会发现六个g和四个g内存占用率都是差不多的。都剩下不了多少内存。系统会根据使用习惯把常用软件从rom调入ram中供用户随时快速打来。

设置一下后台最多只同时打开三个或四个应用软件,其实安卓没有必要那么在乎还剩下多少内存,你会发现六个g和四个g内存占用率都是差不多的。都剩下不了多少内存。系统会根据使用习惯把常用软件从rom调入ram中供用户随时快速打来。

  以上这些设计确保了安卓Android的稳定性,正常情况下最多单个程序崩溃,但整个系统不会崩溃,也永远没有内存不足的提示出现。大家可能是被windows毒害得太深了,总想保留更多的内存,但实际上这并不一定会提升速度,相反却丧失了程序启动快的这一系统特色,很没必要。大家不妨按我说的习惯来用用这个系统。最后推荐一款进程管理软件,systempanel,market上能搜到,界面友好启动快,功能也不错,用于手动关闭进程很好的软件。祝大家玩机愉快,这系统开十天半个月都没问题,不是windows。

8、HOME键和后退键

  在运行一个程序时,按一下HOME键就可以退到桌面,一般来说按一下退出键也可以退到桌面,这两者有什么区别呢?

按HOME键,看起来似乎是退出了,但是其实这个软件并没有被关闭,而是转为了后台程序(指一般的软件,不讨论特别种类的软件)

按退出键,看起来也是退出没错,但这个软件其实是被转为了空置程序(音乐除外,音乐属于有服务的特殊软件)

  Android的所有5个程序进程的级别高低,空进程是最低的,它存在的目的是为了下次打开这个软件的时候可以更加方便快速(这是个很好的设计目的),而一旦需要清理出更多内存空间时,它也是被系统自动的最优先清除的

  所以,大家明白了吧?一旦需要退出软件时,如果是没有提供退出功能的软件,那么尽量用退出键退出而不是HOME键,并且,最重要的是,没有必要用进程管理类软件主动去清理空置进程,因为它本来就是为了被清理而存在,但在没轮到它被清理之前,还可以发挥重新快速开启的作用,一旦被你主动清理了,就连这点好处都没有了,那么,android系统的设计师又何必要设计出这个空置程序呢?直接释放内存不是更好么?所以,结论就是,既然它存在,就有它存在的好处!就要让我们享受到这个好处!用进程管理主动去清除空置程序绝对是违反android系统的设计本意的,是一种可笑的傻做法!

8.1 HOME键

  众所周知,android跟iphone不同,咱们的gphone是一个典型的多任务系统,既然是多任务系统,那么自然就会有一个在多任务之间切换的需要,那么大家是否真的都会这个操作呢?

  这时候,就需要用到HOME键了,在一个程序中的时候,比如短信息,看到几个单词不认识,那么就可以选中这段文字,然后复制,按HOME键切换到桌面,然后打开词典,粘贴,查询,查好后再长按HOME键(长按的作用是在几个打开的程序和最近曾打开的程序之间切换),切换回短信息,这时候短信息程序不需要重新打开仍然是你刚才的界面,可以再复制然后长按切换词典继续查询下一个单词。

  这就是HOME键的用法,其实这是一个前后台程序之间切换而已。

  最后,简单的归纳一下所有内容,其实整篇文章的意思就是说,按退出键相当于“真正的”退出关闭程序,按HOME键,看起来似乎是关闭了程序,但是其实只是一种假象,程序只是被降低了仅仅“一”个等级而已,HOME更适合多任务切换用,就这么简单。

8.2 应用

按home退出,程序保留状态为后台进程;按返回键退出,程序保留状态为空进程。空进程的oom_adj评值高于后台进程,更容易被系统清理。所以推荐用返回键退出。

UC、愤怒小鸟、都市赛车之类程序本身提供关闭功能的,还是尽量主动关闭。浏览器、电子市场、opera mini等不提供关闭功能的,直接返回键退出就行。

9、独特的进程管理策略

  Android采取了一种有别于Linux的进程管理策略,有别于Linux的在进程活动停止后就结束该进程,Android把这些进程都保留在内存中,直到系统需要更多内存为止。这些保留在内存中的进程通常情况下不会影响整体系统的运行速度,并且当用户再次激活这些进程时,提升了进程的启动速度。

  那Android什么时候结束进程?结束哪个进程呢?之前普遍的认识是Android是依据一个名为LRU(last recently used最近使用过的程序)列表,将程序进行排序,并结束最早的进程。XDA的楼主又进一步对这个管理机制进行研究,有了如下发现:

系统会对进程的重要性进行评估,并将重要性以“oom_adj”这个数值表示出来,赋予各个进程;(系统会根据“oom_adj”来判断需要结束哪些进程,一般来说,“oom_adj”的值越大,该进程被系统选中终止的可能就越高)

前台程序的“oom_adj”值为0,这意味着它不会被系统终止,一旦它不可访问后,会获得个更高的“oom_adj”,作者推测“oom_adj”的值是根据软件在LRU列表中的位置所决定的;

Android不同于Linux,有一套自己独特的进程管理模块,这个模块有更强的可定制性,可根据“oom_adj”值的范围来决定进程管理策略,比如可以设定“当内存小于X时,结束“oom_adj”大于Y的进程”。这给了进程管理脚本的编写以更多的选择。

Android将进程进行了分类:

前台进程(foreground):目前正在屏幕上显示的进程和一些系统进程。举例来说,Dialer Storage,GoogleSearch等系统进程就是前台进程;再举例来说,当你运行一个程序,如浏览器,当浏览器界面在前台显示时,浏览器属于前台进程(foreground),但一旦你按home回到主界面,浏览器就变成了后台程序(background)。我们最不希望终止的进程就是前台进程。

可见进程(visible):可见进程是一些不再前台,但用户依然可见的进程,举个例来说:widget、输入法等,都属于visible。这部分进程虽然不在前台,但与我们的使用也密切相关,我们也不希望它们被终止(你肯定不希望时钟、天气,新闻等widget被终止,那它们将无法同步,你也不希望输入法被终止,否则你每次输入时都需要重新启动输入法)

次要服务(secondary server):目前正在运行的一些服务(主要服务,如拨号等,是不可能被进程管理终止的,故这里只谈次要服务),举例来说:谷歌企业套件,Gmail内部存储,联系人内部存储等。这部分服务虽然属于次要服务,但很一些系统功能依然息息相关,我们时常需要用到它们,所以也太希望他们被终止

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

内容供应节点(content provider):没有程序实体,进提供内容供别的程序去用的,比如日历供应节点,邮件供应节点等。在终止进程时,这类程序应该有较高的优先权

空进程(empty):没有任何东西在内运行的进程,有些程序,比如BTE,在程序退出后,依然会在进程中驻留一个空进程,这个进程里没有任何数据在运行,作用往往是提高该程序下次的启动速度或者记录程序的一些历史信息。这部分进程无疑是应该最先终止的。

10、极端情况

  至于为什么开了大程序或者开了好几个程序之后切换会变慢,我的理解如下:

大程序A已经开启,占用70%内存,如果再想运行一个B,需要50%的内存,则就需要一个将A从内存中释放或者压缩的过程,所以表现出来的就是慢一会儿

ABCDE共占用内存80%,运行新程序Z需要20%的内存,系统内存因为没见过剩余0的时候,也就是应该剩一部分空闲内存,那么就需要从A~E这几个程序中选择一个或者几个来关闭,这一过程也需要耗费系统资源,所以会慢一会儿

也就是说你手动去杀程序的时候,就是替系统在释放内存,就算你不杀,在需要内存的时候系统也会自动释放。

不在后台运行的程序(没服务的),即使不杀也不会耗电。在后台运行的(有服务的)程序,如后台放歌,当然会耗电。

不是说杀进程没用,不然作者就不会推荐进程管理软件了。哪个带服务耗电哪个后台一直在运行,看服务就能看出来,这样的该杀。

以qq举例,正常的退,会在进程管理里留下qq的运行状态,但不耗电不占cpu,如果你只是切换出去(按HOME而不是退出)那么自然会耗电,因为程序还在运行。(qq后台一样后台就是qq正常退出的时候和别的软件一样不完全退出会在内存里留着但是不占cpu不费电再次启动就会非常快了这就是为什么android能超越WM6的系统的原因)

11、MinFreeManager的使用

  进程管理,推荐使用MinFreeManager,市场上就有下载,用于设置这六类进程的管理策略。

  软件运行后有六个输入框,在输入框中只能输入数字,这些数字代表了这类进程的处理策略,比如Foreground App下的输入框显示6,就表示,当可用内存低于6MB时,终止Foreground App。下面的类似,如Empty App下的输入框显示24,则表示,当内存低于24MB时,终止Empty App。

  从软件数值的设置不难看出结束进程的有限顺序:Empty>Content Provider>Hidden>Secondary Server>Visible>Foreground。

11.1 默认设置存在的一些问题:

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

11.2 解决两个矛盾:

拉开各进程的阀值层次,使得进程管理机制能更有效得工作

提升阀值上限,空出更多的空余内存,以提升系统整体的运行速度

11.3 进程管理策略设置原则:

  前台进程、可见进程和次要服务是与用户体验息息相关的内容,这部分的进程管理策略要相对保守,给这些进程留下足够的运行空间

  压榨无用进程,腾出内存空间给主要程序使用

11.4适应不同的使用需要的几种设置方式

11.4.1 游戏玩家/重度浏览器使用者配置:

  用户特点:长时间专注于某一特定的,高内存需求的程序,对多任务的需求不高

  配置参数:

Foreground:6

Visible:8

Secondary Server:16

Hiden App:80

Content Provider:90

Empty:100

  配置理念:压榨后台进程,内容供应节点和空进程,将内存尽可能多得留给前台进程和系统,提升游戏速度和浏览器体验

  优点:程序启动和运行的速度最快

  缺点:多任务处理不理想,开启程序较多时,后台进程会被终止

11.4.2 多任务配置:

  用户特点:同时运行多个应用程序,需要经常在多个程序间切换

  配置参数:

Foreground:6

Visible:8

Secondary Server:16

Hiden App:20

Content Provider:60

Empty:100

  配置理念:压榨空进程,给内容供应节点留有一定空间,最大限度提升后台程序的使用空间,提升多任务的处理能力

  优点:运行多个程序时,由于可支配内存较多,后台程序不容易被终止

  缺点:程序启动的速度和整体系统的运行速度可能会比游戏玩家配置略慢一些,由于经常运行多任务,平时系统的响应速度会受到一定影响

11.4.3 轻度用户/女生专用配置

  用户特点:手机的主要功能是短信和电话,偶尔用用相机自拍

  配置参数:

Foreground:6

Visible:8

Secondary Server:16

Hiden App:24

Content Provider:32

Empty:48

  配置理念:压榨空进程,给内容供应节点留有一定空间,最大限度提升后台程序的使用空间,提升多任务的处理能力

  优点:比较均衡的配置,提升了系统的可用内存,使得系统的整体速度得到了提高,拉开了各级进程的管理策略层次,使得管理机制更有效率

  缺点:比较均衡的配置,无明显缺点 

12、总结

12.1 快速启动

  有着良好windows操作习惯,而又不了解Android内存管理机制的人,在使用Android系统的时候,会很在意系统的内存资源使用情况——去频频清除那些不使用而常驻内存的程序(进程),这样就会忽略掉android的一个独特的优点,进而在不知情的情况下白白消耗宝贵的手机资源。

  手机资源的宝贵,在于它的CPU,在于它的电量。不使用而常驻内存的进程,一般以后台进程和空进程的形式存在内存中(QQ、音乐播放等是开启了service,不同于这一情况),是不会消耗CPU和电量的,相反常驻内存有个显著的长处,是程序在不重复消耗资源的情况下获得了快速启动,这是Android独特的进程管理特点。

  而频频用进程管理软件主动清除后台和空进程是要消耗资源的,而进程的关闭和开启也要消耗相应的资源,简单说来,这就是用一个资源消耗的动作去实现另一个资源消耗的动作,最终导致重启程序时第三个资源消耗动作的发生。

12.2 HOME键和退出键

  按HOME键,程序转入后台进程;

  按退出键,程序直接转入空进程;

  此时进程获得了快速启动的功能,而不消耗任何资源

12.3 Android的进程管理机制

那是不是将程序全部以后台和空进程的形式常驻内存就会将快速启动这一优点发挥到最大?

  不是的,技术的进步,内存再大也是有限的,这就得说到内存管理的另一个机制——进程管理。进程按照优先级分为五类:前台进程、可见进程、服务进程、后台进程、空进程,从左往右优先级的值依次递增,当内存紧张时,那么进程管理机制就会根据优先级的值,从高到低依次关闭,空进程->后台进程->可见进程->服务进程->前台进程,从此可见,那么对空进程和后台进程会消耗内存资源的担忧可以缓一缓了,因为后台和空进程的状态从另一面来说也可以理解为“准备关闭“的进程。

  如此,我们就可将一般的软件交给进程管理机制自身进行管理就好了

12.4 进程管理软件

  Android进程管理机制如此智能,但相应的软件作为工具的存在还是有着自身的价值。

  1、大量需要内存

  当我们可预见的需要大量内存,如开启一个消耗内存的进程(游戏)、或某一时刻开启大量的进程时,如果这时还交由进程管理机制来处理,那么就会导致机制频繁的检查剩余内存、关闭进程、开启新进程这一流程,这时不明智的。我们可以做的是,事先使用进程管理软件,将要使用的内存一次性清理出来,再来开启相应的进程。

  2、不良软件

  除开上述情况,还有一种情况是,面对不良软件,即在后台运行也开启消耗资源,如弹窗、耗电、走流量等服务进程,而在某一时段又不便卸载的情况下,进程管理软件也能体现相应的价值。

12.5 开发者选项中的内存管理功能

Android手机都存在这一功能,里面有着几项与内存管理相关的选项:

不保留活动:对activity进程的限制;

后台进程限制:名字很是直白,这一功能能在一定程度上解决12.4中的问题,但是还是那句话禁用后台进程的话本身就是禁掉了Android系统本身的特色——快速启动;

系统内存优化级别:对后台进程的压缩程度,越是高级压缩越厉害,但相应的程序之间的切换也越容易卡,而且压缩本身也是一个消耗资源的过程。所以如果程序之间切换较为频繁,可禁用这一功能,但是如果有长时玩单一游戏的习惯的话,可以依照自身程序切换频率设置相当的级别。

编辑:科技产品 本文来源:手提式有线电话机总是轻巧满内部存储器

关键词: