- Linux内存管理机制
- 虚拟内存:将外部存储器划分一部分拓展空间,内存不足时系统选取优先级较低的代码块转移到拓展空间中,之后若用到被转移的代码块则交换转移回来。此过程由系统自动完成,对上层完全透明
- COW(copy on write):多个对象在起始时共享某个资源,只有在某个对象需要进行修改时才为其开辟一份自己的拷贝。避免了不必要的资源操作,提升了运行速度
- 内存保护:分段与分页管理
- 存储分配与回收
- 需要保证操作系统向上透明
- 动态分配存储与回收
- 已分配的内存释放造成内存碎片的问题
- OOMKiller
- 系统可以内存达到临界值时按照一定优先顺序回收内存
- 内核内每个进程都有一个权重值oom_adj,根据权重、进程消耗内存、进程占用CPU时间为进程评分oom_score,分数越低被收回得越晚
- 虚拟内存:将外部存储器划分一部分拓展空间,内存不足时系统选取优先级较低的代码块转移到拓展空间中,之后若用到被转移的代码块则交换转移回来。此过程由系统自动完成,对上层完全透明
- Android Low Memory Killer(LMK)
- 设置shrinker监听回调机制,系统空闲内存低于某一档值后就会回收优先级低于对应档权重的进程
- lowmem_minfree数组定义系统预定义的空闲内存{6MB,8MB,16MB,64MB};lomem_adj数组定义系统预定义对应层级需要被处理的adj值{0,1,6,12}(取值范围-17——15),数值越大,进程级别越低。(可以自定义修改这两个数组)
- 在AndroidManifest.xml中为application标签添加“android:persistent=true”属性,可以将此应用程序设置为常驻内存,但是要保证程序本身足够完善,不会导致系统内存泄漏
8.24
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- Android 的设计理念之一,便是应用程序退出,但进程还会继续存在系统以便再次启动时提高响应时间. 这样的设计会...
- 本篇文章是后台杀死系列的最后一篇,主要探讨一下进程的保活,Android本身设计的时候是非常善良的,它希望进程在不...