一、oom_adj 值简介
oom_adj 值是 Linux 内核为每个进程分配的 , 该值可以反映进程的优先级 ;
在内存不足 , 要杀进程 , 回收内存时 , 会根据该 oom_adj 值决定是否回收该进程 ;
二、查询进程号 PID
获取进程号
执行如下命令 , 可以获取 Android 手机的进程号 ;
adb shell ps
PS 每行的输出含义 :
USER : 进程所属用户 , ROOT 是权限最高的用户 , 其它都是各个应用对应的用户名称 ;
PID : 进程 ID ;
PPID : 进程父 ID ;
VSZ : Virtual Size 缩写 , 进程虚拟内存大小 ;
RSS : Resident Set Size 缩写 , 该进程实际驻留在内存中的大小 ;
WCHAN : 休眠进程对应的在内核中的地址 ;
NAME : 进程名称 ;
三、查询进程对应的 oom_adj 值
获取进程号之后 , 执行如下命令 , 即可查询进程号对应进程的 oom_adj 值 ;
首先进入 Android 设备 adb shell 命令行 ,
adb shell
最后查询进程号对应进程的 oom_adj 值 ;
cat /proc/11694/oom_adj
最终查询的该进程的 oom_adj 值为 0 , 说明该进程当前处于前台 , 是前台进程 ;
在Android的lowmemroykiller机制中,会对于所有进程进行分类,对于每一类别的进程会有其oom_adj值的取值范围,oom_adj值越高则代表进程越不重要,在系统执行低杀操作时,会从oom_adj值越高的开始杀。