内存管理机制

一内存管理机制概述

从操作系统的角度来说,内存就是一块数据存储区域,而且他是可以被操作系统调动的资源。在现在的多进程操作系统当中,内存管理十分重要。操作系统它会为每一个进程合理分配内存资源,这里我们来从两个角度来分析,什么是内存管理机制。

1、分配机制

操作系统它会为每一个进程分配一个合理的大小,从而他能保证每一个进程能够正常的运行。而不至于内存不够使用或者某个进程占用太多的内存,这就是操作系统里面的分配概念。

2、回收机制(这一块是操作系统特别重要的一块)

  在系统内存不足的时候,他会有一个回收再分配内存资源的机制,从而能够保证新的进程能够正常运行。而回收的时候就要杀死那些占有内存的进程,所以操作系统需要提供一套合理的杀死这些进程的机制,从而把副作用将到最低,而对于我们安卓系统来说,它对内存管理也有一套特别的办法,它和PC端是不一样的。我们都知道安卓它是移动操作系统,一般情况下安卓的内存资源会比PC端更少,所以我们就要更加谨慎的管理内存。

Android内存管理机制

1、分配机制

我们知道,安卓在为每一个进程分配内存的时候,它采用了一个弹性的分配方式,比如刚开始他不会为一个新的APP分配太多的内存空间,而是给每一个app进程分配一个小额的内存量,而这个量是根据每一个移动端设备物理尺寸大小所决定,随着你的APP不断的运行,你可能发现当前内存已经不够使用了,这个时候安卓就会为每一个进程分配额外的大小,但是我们需要注意的是,分配的额外的内存大小不是随意去分配的,他是有限度的。因为我们都知道,安卓的内存大小是有限制的,所以说系统不可能为每一个APP进程分配无限大的内存.

总结:安卓的分配机制它的最大限度就是让更多的进程存活在内存当中,当用户下次再次启动时,他就不需要重新创建进程,他只需要恢复已有的进程即可,这样就减少了应用启动的时候,提高用户体验。

2、回收机制

安卓对内存的使用,他的宗旨是尽最大限度的使用。它是继承linux的特点,安卓系统他会在内存中保存尽可能多的数据。这里也有一个缺点,比如说有的进程不再被使用,但是数据还保存在内存当中,所以现在安卓不推荐直接退出应用。如果这样当用户下次启动应用的时候,只需要恢复当前进程即可,而不需要创建新进程。当安卓发现内存不够使用,开始回收内存的时候,安卓就会杀死其他进程。来回收足够的内存,从而开启新的进程。这里注意,对于进程分配他有一个优先级的概念,

优先级它主要分为五个阶段。

  第一:前台进程,屏幕当中显示的进程


  第二:可见进程,他已经不属于前台进程,用户仍能看见的进程,


  第三:服务进程,例如定位、闹钟等。


  第四:后台进程,后台进程不同于服务进程,它是在后台处理一些计算的进程.


  第五:空进程,没有任何东西在内存运行的进程。内存可以随时回收。

三、安卓中为什么会有这五个分级

答:因为优先级越低的进程,被内存回收的概率越大

  1、例如前台进程、可见进程、服务进程:一般情况下是不会被杀死的,


  2、后台进程:他会存放在一个缓存的列表中,就是lru(最进最少使用的)缓存机制,先杀死的进程他会处于这个列表的尾部(也就是最进最少使用的后台进程会被第一个杀死)。


  3、空进程:他是为了平衡整个系统的性能,安卓是不会保存这些进程的,

四、回收效率概念是什么

答:当安卓开始杀死进程的时候,系统会判断每一个杀死后所带来的回收效益,因为安卓更喜欢杀死一个能够回收更多内存的进程,在这里我们就知道,可以杀死更多的进程,来获取更多的内存。当然我们还是希望能够杀死少的进程,这样对用户的体验影响越小。

五、遵循内存管理机制的目标

答:我们在开发项目的时候,都会给APP顶订一个内存目标,这目标有以下几点:

  1、更少的占用内存:我们都知道,如果一个APP性能更好,站用户手机的内存越少,这样对用户的体验,都是一个很好的目标。


  2、在合适的时候,合理的释放系统资源。(并不是你不要的马上就要回收,如果频繁的释放对象,会造成内存抖动,而内存抖动会造成很多不好的现象,比如UI卡顿、anr、甚至是oom)


  3、在系统内存紧张的时候,能释放掉大部分不重要的资源,来为Android系统提供可用的内存。


  4、能够很合理的在特殊生命周期中,保存或者还原重要数据,以至于系统能够正确的重新回复应用

六、内存优化方法。

答:我们在开发项目的时候,都会给APP顶订一个内存目标,这目标有以下几点:

  1、当service完成任务,尽量停止它。我们知道service进程优先级是比较低的,他的优先级叫做服务进程。所以这会影响到它的内存回收,这里我们可以用IntentService替换Service完成所需要的任务。



    好处有两点:

    第一点:我们知道IntentService是继承Service,他也是一个服务,但是他不同Service的地方,Service是默认在主线程,所以Service不可以做耗时操作, 是内部开启一个子线程,所以在他的onHandleIntent方法中,可以做一些耗时操作。


    第二点:IntentService执行完之后他会自动停止,而Service必须手动调用才能停止,如果Service没有退出就会造成内存的泄露。



  2、在UI不可见的时候,释放掉一些只有UI使用的资源


  3、在系统内存紧张的时候,尽可能多的释放掉一些非重要的资源。


  4、避免滥用Bitmap导致资源浪费。(根据当前分辨率压缩Bitmap是最好的选择,只用后要调用recycle方法释放掉Bitmap在C内存中的内存,也可以使用软引用引用一个Bitmap,然后使用lru缓存,来对Bitmap进行缓存算法)


  5、使用针对内存优化过的数据容器,少用枚举常量,它消耗的内存是普通常量的两倍多


  6、避免使用依赖注入框架。:例如我们项目开发过程中,会使用很多的注入框架,例如ButterKnife。使用这些依赖框架有好的地方,但是也会给我们带来额外的服务。


  7、使用多进程,例如定位、推送、WebView就可以写一个后台进程来执行。特别是Webview如果不开启一个进程的话就会造成内存泄露。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 227,702评论 6 531
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 98,143评论 3 415
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 175,553评论 0 373
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 62,620评论 1 307
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 71,416评论 6 405
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 54,940评论 1 321
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 43,024评论 3 440
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 42,170评论 0 287
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 48,709评论 1 333
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 40,597评论 3 354
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 42,784评论 1 369
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 38,291评论 5 357
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 44,029评论 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 34,407评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 35,663评论 1 280
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 51,403评论 3 390
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 47,746评论 2 370

推荐阅读更多精彩内容