Android在内存管理上与linux有些小的区别。其中一个就是引入了Low memory killer .
1、引入原因:
Android是一个多任务系统,也就是说可以同时运行多个程序,这个大家应该很熟悉。
一般来说,启动运行一个程序是有一定的时间开销的,因此为了加快运行速度,当你退出一个程序时,Android并不会立即杀掉它,这样下次再运行该程序时,可以很快的启动。
随着系统中保留的程序越来越多,内存肯定会出现不足,low memory killer就是在系统内存低于某值时,清除相关的程序,保障系统保持拥有一定数量的空闲内存。
2、基本原理和重要概念:
Low memory killer根据两个原则,进程的重要性和释放这个进程可获取的空闲内存数量,来决定释放的进程。
Android根据进程的重要性分成以下几类,按照重要性依次降低的顺序:
名称 |
oom_adj |
解释 |
FOREGROUD_APP |
0 |
前台程序,可以理解为你正在使用的程序 |
VISIBLE_APP |
1 |
用户可见的程序 |
SECONDARY_SERVER |
2 |
后台服务,比如说QQ会在后台运行服务 |
HOME_APP |
4 |
HOME,就是主界面 |
HIDDEN_APP |
7 |
被隐藏的程序 |
CONTENT_PROVIDER |
14 |
内容提供者 |
EMPTY_APP |
15 |
空程序,既不提供服务,也不提供内容 |