新闻资讯 一手资讯 新游前瞻 游戏测评 游戏攻略 娱乐八卦 硬件周边 H5新闻 产业新闻
Z 您现在的位置:首页 > 手机 > 正文

《手机》【情报】Android内存 机制及自行 方法

2021-08-24 12:04:23来源:巴哈姆特发布:佚名

marvin53 (小狼) #1 2018-02-05 20:34:46
心得:
板上好像没看到这篇文章,来分享一下,最原始的来源不可考了,这篇可以让大家知道Android在记忆体的控管和分配是如何运作的,让大家有个正确的使用观念,如果想自行 程式进程的,可以参考他推荐的APP自行 ,对于RAM小的使用者来说应该会很有帮助,当然如果RAM很大的基本上就给系统自行处理就好

然后Home键和退出键虽然都是可以退出但是其实是不一样的,文内有详细说明,依照自己的需求在退出的时候可以选择要按哪一个

------------------------------------------------------------------------------------------------------------------------


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  以上这些设计确保了安卓Android的稳定性,正常情况下最多单个程序崩溃,但整个系统不会崩溃,也永远没有内存不足的提示出现。大家可能是被windows毒害得太深了,总想保留更多的内存,但实际上这并不一定会提升速度,相反却丧失了程序启动快的这一系统特色,很没必要。大家不妨按我说的 惯来用用这个系统。最后推荐一款进程 软件, panel,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从内存中释放或者压缩的过程,所以表现出来的就是慢一会儿
A\B\C\D\E共佔用内存80%,运行新程序Z需要20%的内存,系统内存因为没见过剩余0的时候,也就是应该剩一部分空闲内存,那幺就需要从A~ E这几个程序中选择一个或者几个来关闭,这一过程也需要耗费系统资源,所以会慢一会儿
也就是说你手动去杀程序的时候,就是替系统在释放内存,就算你不杀,在需要内存的时候系统也会自动释放。
不在后台运行的程序(没服务的),即使不杀也不会耗电。在后台运行的(有服务的)程序,如后台放歌,当然会耗电。
不是说杀进程没用,不然作者就不会推荐进程 软件了。哪个带服务耗电哪个后台一直在运行,看服务就能看出来,这样的该杀。
以 举例,正常的退,会在进程 里留下 的运行状态,但不耗电不佔cpu,如果你只是切换出去(按HOME而不是退出)那幺自然会耗电,因为程序还在运行。( 后台一样后台就是 正常退出的时候和别的软件一样不完全退出会在内存里留着但是不佔cpu不费电再次启动就会非常快了这就是为什幺android能超越WM6的系统的原因)

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

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

  从软件数值的设置不难看出结束进程的有限顺序:Empty gt;Content Provider gt;Hidden gt;Secondary gt;Visible gt;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 :16
Hiden App:80
Content Provider:90
Empty:100
  配置理念:压榨后台进程,内容供应节点和空进程,将内存尽可能多得留给前台进程和系统,提升游戏速度和浏览器体验

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

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

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

  配置参数:

Foreground:6
Visible:8
Secondary :16
Hiden App:20
Content Provider:60
Empty:100
  配置理念:压榨空进程,给内容供应节点留有一定空间,最大限度提升后台程序的使用空间,提升多任务的处理能力

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

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

11.4.3 轻度用户/女生专用配置
  用户特点: 的主要功能是短信和 ,偶尔用用相机

  配置参数:

Foreground:6
Visible:8
Secondary :16
Hiden App:24
Content Provider:32
Empty:48
  配置理念:压榨空进程,给内容供应节点留有一定空间,最大限度提升后台程序的使用空间,提升多任务的处理能力

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

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

12、总结

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

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

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

12.2 HOME键和退出键
  按HOME键,程序转入后台进程;

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

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

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

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

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

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

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

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

12.5 开发者选项中的内存 功能
Android 都存在这一功能,里面有着几项与内存 相关的选项:

不保留活动:对activity进程的 ;
后台进程 :名字很是直白,这一功能能在一定程度上解决12.4中的问题,但是还是那句话禁用后台进程的话本身就是禁掉了Android系统本身的特色——快速启动;
系统内存优化级别:对后台进程的压缩程度,越是高级压缩越厉害,但相应的程序之间的切换也越容易卡,而且压缩本身也是一个消耗资源的过程。所以如果程序之间切换较为频繁,可禁用这一功能,但是如果有长时玩单一游戏的 惯的话,可以依照自身程序切换频率设置相当的级别。


看较旧的 30 则留言

☆月影☆*^﹏^*: 03-29 10:07

老实说.. 有很多都是错的!!没写好的后台程式还是会吃cpu 的. 我就写过在后台会一直吃cpu 的程式. 一下子就没电了

熊头丸: 08-20 16:53

结论:拉机安卓不能在后台下载程式

照烧猪猪: 08-20 17:14

记忆体 ...

thakstyle (THAK) #2 2018-02-06 10:20:14
这个给喜欢玩的看就好

花时间研究怎幺搞好内存小的 ,不如花时间研究怎幺搞出收入高的工作

看较旧的 12 则留言

蓝菇菇王: 02-06 15:45

没那个本事的只好去找别的方向

风漂悠客: 09-19 06:30

想请问以下,一般在记忆体选项里面看到的都不足量,例如硬体规格是4GB,但是现实只有3.9GB,那所差的这0.1GB是否跟桌机的内显一样是保留给内显使用?

风漂悠客: 09-19 06:30

这个配值有办法修改吗?

jerryexcc (播磨拳儿) #3 2018-02-06 11:50:59
学术角度的讨论,要炮请小力一点



关于Ram的 好处在于快速启动

所以我也马上拿自己的 实际玩玩看

Back 和 Home的差别

讲得白话一点

Back就像是叫你从入口处重新进来(App等于重新开启,画面变成最一开始打开时的样子)

Home就像是请您原地稍后(重新开时,画面不会改变)

但是我个人还是会把 onStop 不用的App给 Destroy掉

我自己也有上网找关于 onStop状态下会佔用多少Ram的文章

不过似乎没什幺人提

但是我用人类的观点来看
=================================================
今天你(Android)有一份工作(App)要做

而因为主管(User)临时交办另外一件事情(另一个App)

你(Android)问了主管(User):第一个工作(App)怎幺办?

主管(User)说:

1.丢掉不要了(Destroy掉)

2.先暂停(onStop),并处理另一个工作(另一个App)先

=================================================
1比较没有什幺争议

丢掉就丢掉,我还鸟他啊


所以讨论2吧

不论是主管(User)或是你(Android)都应该心里会有个念头

另外一个工作(另一个App)做完了之后回到第一个工作(App)

需要费神(电力)去记忆(Ram)

我个人并不认为累积一堆的 onStop 状态的App对Android有多快速的帮忙

当然,如果只是两个 onStop 还好说

因为7.0以后新增加快速切换

切换方式为双击任务选单钮两下


这个快速切换我个人很常用

刚开始使用7.0的时候就开始玩这个好用的功能

但是同时开启3个以上的App却只能在1和2近开启的App间切换

3根本完全被晾在那边

除非开启任务清单点选之


先不说Serv 佔用多少Ram

一个App被呼叫且开始与使用者互动

就一定会佔用Ram

临时因为上课偷玩老师走到附近赶快关掉萤幕收起来

一定也还是佔用Ram去记忆当前画面

不可能记忆不耗电,撕烂我的嘴我也不信

这只是用常规的观点去解释

更何况开了几十个App在 onStop 状态

一定会去记忆这些App

就算没在运作,他也一定会帮你记住 你开启了Line, FB, Youtube.......等等的App(先不讨论Serv 后台)

我不信他这样记忆不耗电

还是我有哪里理解错误,欢迎纠正



最后,我是用我程式设计的观点去解读,没有到很厉害,经验不足

毕竟现在在写双平台才发现

为何IOS会那幺顺....因为记忆体 太优秀....优秀到记忆体要程式设计师来 自己的App.....

但是我个人还是Android的爱用者,因为写 惯了XD

看较旧的 16 则留言

fantasy: 08-15 12:28 编辑

不知道有没有把整支记忆体全写1 跟全写0 然后不做 读写的 这样才比较能确认 到底持续维持1的状态 是否需要额外电力 目前 看起来都只能说明背景功耗基本是固定而已

QOO: 09-02 13:45

fantasy 现在电脑使用的DRAM 是一种用电容方法记亿的. 电容会随这时间电量会越来越少. 最后读不出正确的值. 所以DRAM 每一段时间都会去刷新RAM 中的资料.

QOO: 09-02 13:49

当然如你说的 跟本不知道是0 or 1所以就通通刷新. 写1的要充电. 写0 的不用. 充电会消耗一点点电.所以如你说的如果通通都是1 肯定会耗电多一些些.

jerryexcc (播磨拳儿) #4 2018-02-06 16:32:59
更新一下下午的发现

按Home跳出去

对App来说只是onStop


不过按back跳出去的却是onDestroy


这也就说明为何按返回键比较省记忆体

因为App整个完全停摆

重新开当然会回到生命週期的最一开始重来

看较旧的 5 则留言

播磨拳儿: 02-06 17:12

[marvin53:小狼]了解

播磨拳儿: 02-06 17:15

[marvin53:小狼]不过从程式面去了解的人,应该就自主 了吧XDD

小狼: 02-06 17:53

[jerryexcc:播磨拳儿]嗯,就是这个意思XD

Anna520520 (提督) #5 2021-08-03 02:15:56
虽然隔很久了,但还是请问,我目前找不到MinFreeManager,请问有哪个程式也能调整分配数值吗?
TAG: 情报   自行   机制
最新礼包

Copyright © 2017-2018 www.thisisdb.com All rights reserved DB游戏网 版权所有

备案号:蜀ICP备15007551号-2 DB游戏网

DB游戏网手机版