从系统看进程

一些常用命令

进程相关命令

作用命令
查看lru listadb shell dumpsys activity lru
查看总体进程相关信息adb shell dumpsys activity processes
查看某个进程的详细信息adb shell dumpsys activity p processName
查看进程的oomadb shell dumpsys activity oom

内存相关命令

作用命令
查看历史Lmk查杀对应级别数量dumpsys activity lmk
process+oom+category+totaldumpsys meminfo
输出指定包名的进程,可能包含多个进程dumpsys meminfo --package
输出指定pid的某一进程dumpsys meminfo
查看手机详细的内存信息cat /proc/meminfo

进程优先级

ADJ级别adjString取值含义
INVALID_ADJ-10000未初始化的值
CACHED_APP_MAX_ADJ999不可见进程adj的最大值
CACHED_APP_MIN_ADJ“cch”900不可见进程adj的最小值
CACHED_APP_LMK_FIRST_ADJ950lmk 最先查杀的级别
SERVICE_B_ADJ"svcb "800B List中的Service
PREVIOUS_APP_ADJ"prev "700上一个进程
HOME_APP_ADJ"home "600Home进程
SERVICE_ADJ"svc "500服务进程
HEAVY_WEIGHT_APP_ADJ"hvy "400重量级进程
BACKUP_APP_ADJ"bkup "300备份进程
PERCEPTIBLE_LOW_APP_ADJ"prcl "250感知低的进程
PERCEPTIBLE_APP_ADJ"prcp "200可感知进程
VISIBLE_APP_ADJ"vis "100可见进程
PERCEPTIBLE_RECENT_FOREGROUND_APP_ADJ50当前为前台Service,15秒内曾是前台App
FOREGROUND_APP_ADJ"fg "0前台进程
PERSISTENT_SERVICE_ADJ"psvc "-700关联着系统和persistent进程
PERSISTENT_PROC_ADJ"pers "-800系统persistent进程
SYSTEM_ADJ"sys "-900仅指system_server进程
NATIVE_ADJ"ntv "-1000native进程
procState级别procStateString取值含义
PROCESS_STATE_NONEXISTENT“NONE”20不存在
PROCESS_STATE_CACHED_EMPTY"CEM "19进程处于cache状态且为空进程
PROCESS_STATE_CACHED_RECENT"CRE "18进程处于cached状态,且与现有的最近任务一致的activity
PROCESS_STATE_CACHED_ACTIVITY_CLIENT“CACC”17进程处于cached状态,且为另一个cached进程(内含Activity)的client进程
PROCESS_STATE_CACHED_ACTIVITY"CAC "16进程处于cached状态且内含activity
PROCESS_STATE_LAST_ACTIVITY“LAST”15后台进程且拥有上一次显示的activity
PROCESS_STATE_HOME“HOME”14后台进程且拥有Home Activity
PROCESS_STATE_HEAVY_WEIGHT"HVY "13后台进程,但无法执行restore
PROCESS_STATE_TOP_SLEEPING“TPSL”12设备处于sleeping时的top app
PROCESS_STATE_RECEIVER“RCVR”11后台进程且正在运行receiver
PROCESS_STATE_SERVICE"SVC "10后台进程且正在运行Service
PROCESS_STATE_BACKUP“BKUP”9CACHED_APP_MIN_ADJ后台进程且正在执行backup/restore操作
PROCESS_STATE_TRANSIENT_BACKGROUND“TRNB”8短暂的处于后台的进程
PROCESS_STATE_IMPORTANT_BACKGROUND“IMPB”7对用户很重要,但是用户不可感知
PROCESS_STATE_IMPORTANT_FOREGROUND“IMPF”6对用户很重要,用户可感知
PROCESS_STATE_BOUND_FOREGROUND_SERVICE“BFGS”5拥有一个前台Service且由系统绑定
PROCESS_STATE_FOREGROUND_SERVICE"FGS "4拥有一个前台Service
PROCESS_STATE_BOUND_TOP“BTOP”3绑定Top app的进程
PROCESS_STATE_TOP"TOP "2拥有当前用户可见top Activity的进程
PROCESS_STATE_PERSISTENT_UI“PERU”1persistent系统进程,并正在执行UI操作
PROCESS_STATE_PERSISTENT"PER "0persistent系统进程

进程提升优先级的原因

从bugreport中查看

首先搜索dumpsys activity processes找到Process LRU list找到对应进程名如下:

Proc # 6: hvy B/ /HVY trm: 0 16885:com.qiyi.video/u0a209 (cch-act)

hvy 和 HVY 分别代表adj和procState,B代表SCHED_GROUP_BACKGROUND,0代表trimMemoryLevel 为0,cch-act代表adjType

一些常见的示例

  1. 进程adj > Service的由system拉起的client进程,且没有其他flag等,adj会为VISIBLE_APP_ADJ,adjType会为"service"
    一般涉及到adjTarget基本跟Service和ContentProvider相关

Proc #12: vis F/S/FGS trm: 0 19817:com.xiaomi.wearable/u0a495 (service)
com.xiaomi.wearable/.home.devices.ble.sync.NotifySyncService<=Proc{1705:system/1000}

vis = 100 代表可见进程,F = SCHED_GROUP_DEFAULT ,S代表该进程有前台Service,FGS = 5代表procState,adjtype为"service",adjTarget为com.xiaomi.wearable/.home.devices.ble.sync.NotifySyncService ,adjSource为Proc{1705:system/1000}

  1. 设置进程的maxAdj
    Proc # 6: vis R/ /TOP trm: 0 20886:com.miui.bugreport/1000 (cch-started-ui-services)

vis=100 代表可见进程,R=SCHED_GROUP_RESTRICTED,TOP=2,代表当前进程拥有Top Activity,但是这些跟adjType="cch-started-ui-services"不匹配,所以被提升优先级了

APP* UID 1000 ProcessRecord{49fbeae 20886:com.miui.bugreport/1000}
// 最大adj为100,最大procState为2
oom: max=100 procState: max=2 curRaw=1001 setRaw=1001 cur=100 set=100
lastCompactTime=0 lastCompactAction=0 mCurSchedGroup=1 setSchedGroup=1 systemNoUi=false trimMemoryLevel=0
curProcState=2 mRepProcState=2 pssProcState=2 setProcState=2 lastStateTime=-1m5s440ms

本地查看

直接使用adb shell dumpsys activity oom

主要实现在ActivityManagerService的dumpOomLocked

Process OOM control (82 total, non-act at 4, non-svc at 4):
PERS #81: sys F/ /PER trm: 0 1684:system/1000 (fixed)
oom: max=-900 curRaw=-900 procState: max=21 setRaw=-900 cur=-900 set=-900
state: cur=PER set=PER lastPss=242MB lastSwapPss=7.8MB lastCachedPss=0.00
cached=false empty=false hasAboveClient=false
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值