文章目录
- 一、oom_adj 值简介
- 二、查询进程号 PID
- 三、查询进程对应的 oom_adj 值
一、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 : 进程名称 ;
最后看到了熟悉的企鹅进程保活操作 , 有 3 3 3 个进程 ;
在 Android Studio 界面中也可以查看进程 ID , 在 Logcat 面板中 , 进程栏中 , 可以看到 kim.hsl.app2 进程的进程 PID 是 11694 ;
在 PS 中对应的该 PID 为 11694 的进程 ;
u0_a356 11694 725 3714484 75520 0 0 S kim.hsl.app2
三、查询进程对应的 oom_adj 值
获取进程号之后 , 执行如下命令 , 即可查询进程号对应进程的 oom_adj 值 ;
首先进入 Android 设备 adb shell 命令行 ,
adb shell
然后获取 root 权限 ,
su
最后查询进程号对应进程的 oom_adj 值 ;
cat /proc/11694/oom_adj
最终查询的该进程的 oom_adj 值为 0 , 说明该进程当前处于前台 , 是前台进程 ;
查下企鹅的三个进程的 oom_adj 值 :
u0_a295 12420 725 4532232 92244 0 0 S com.tencent.mm:push
u0_a296 12474 726 1202112 78148 0 0 S com.tencent.mobileqq:TMAssistantDownloadSDKService
u0_a296 12591 726 1231864 84668 0 0 S com.tencent.mobileqq:MSF
- com.tencent.mm:push : 0 , 前台进程 , 这操作比较骚了 , 哪来了前台进程啊 ~~~
- com.tencent.mobileqq:TMAssistantDownloadSDKService : 这个进程还带重启的 , 查询的时候 , 进程号不见了 , 发现重启了 , 16 ;
- com.tencent.mobileqq:MSF : 9 ;