一、oom_adj 值简介

oom_adj 值是 Linux 内核为每个进程分配的 , 该值可以反映进程的优先级 ;

在内存不足 , 要杀进程 , 回收内存时 , 会根据该 oom_adj 值决定是否回收该进程 ;

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值越高的开始杀。

 

 



 

posted on 2022-12-28 16:57  南巷挽清风  阅读(330)  评论(0编辑  收藏  举报