- 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
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- Android 的设计理念之一,便是应用程序退出,但进程还会继续存在系统以便再次启动时提高响应时间. 这样的设计会...
- 本篇文章是后台杀死系列的最后一篇,主要探讨一下进程的保活,Android本身设计的时候是非常善良的,它希望进程在不...