AidLux 在 Android 12+ / HarmonyOS 3+ 服务进程被杀解决方案
总结
只想快速解决此问题, 就不用查看后续章节, 只需要执行以下命令:
-
root 设备, 用
su
执行:su -c "/system/bin/device_config put activity_manager max_phantom_processes 2147483647" su -c "/system/bin/device_config set_sync_disabled_for_tests persistent"
-
非 root 设备, 用
adb
执行:adb shell "/system/bin/device_config put activity_manager max_phantom_processes 2147483647" adb shell "/system/bin/device_config set_sync_disabled_for_tests persistent"
adb的使用请查看ADB 使用教程
原因
Android 12 via 15755084 和更新 5706277f 增加了一种机制来监视应用程序启动的分支子进程( 以下称虚进程 ),如果发现其运行的数量超过默认的 32 ( 针对所有应用程序启动的分支子进程之和 ),则杀死它们.
如果应用程序或虚进程使用过多的 CPU, 它们也可能被杀死, 以前也是这样的, 但仅限于应用程序进程本身.
HarmonyOS 3 使用的 Android 版本提升到了 12, 所以也引入了此特性.
检查
检查允许运行的最大虚进程
-
root
su -c "/system/bin/dumpsys activity settings | grep max_phantom_processes"
-
adb
adb shell "/system/bin/dumpsys activity settings | grep max_phantom_processes"
执行结果:
$ adb shell "/system/bin/dumpsys activity settings | grep max_phantom_processes"
max_phantom_processes=32
检查被监视运行的虚进程
-
root
su -c "/system/bin/dumpsys activity processes -a"
-
adb
adb shell "/system/bin/dumpsys activity processes -a"
执行结果:
$ adb shell "/system/bin/dumpsys activity processes -a"
...
All Active App Child Processes:
proc #0: PhantomProcessRecord {8f40e4b 18733:18405:bash/u0a236}
user #0 uid=10236 pid=18733 ppid=18405 knownSince=-11m52s638ms killed=false
lastCpuTime=0 oom adj=-1000 seq=82
proc #1: PhantomProcessRecord {5472028 19126:18405:bash/u0a236}
user #0 uid=10236 pid=19126 ppid=18405 knownSince=-11m52s638ms killed=false
lastCpuTime=0 oom adj=-1000 seq=82
proc #2: PhantomProcessRecord {2051141 19128:18405:python2/u0a236}
user #0 uid=10236 pid=19128 ppid=18405 knownSince=-11m52s638ms killed=false
lastCpuTime=50 timeUsed=+450ms oom adj=-1000 seq=82
...
...
如果没有这部分信息, 拔插电源触发一个更新, 然后再查看.
检测被杀死的虚进程
当你检测到虚进程被杀死, 执行adb
命令:
adb logcat -d -e '^Killing PhantomProcessRecord'
执行结果:
$ adb logcat -d -e '^Killing PhantomProcessRecord'
--------- beginning of system
03-21 14:59:47.660 1033 1377 I ActivityManager: Killing PhantomProcessRecord {8f40e4b 18733:18405:bash/u0a236}: Trimming phantom processes
03-21 14:59:47.660 1033 1377 I ActivityManager: Killing PhantomProcessRecord {5472028 19126:18405:bash/u0a236}: Trimming phantom processes
03-21 14:59:47.660 1033 1377 I ActivityManager: Killing PhantomProcessRecord {2051141 19128:18405:python2/u0a236}: Trimming phantom processes
...
手动触发杀死虚进程
如果想进行一次测试体验虚进程被杀死的过程, 可按以下流程执行
-
启动 AidLux, 查看当前运行的进程:
root@localhost:/home# ps -ef UID PID PPID C STIME TTY TIME CMD 10236 27057 742 0 2020 ? 00:00:03 com.aidlux 10236 27108 742 0 2020 ? 00:00:01 com.aidlux:remote 10236 27165 742 0 2020 ? 00:00:01 com.aidlux:local 10236 27226 1 0 2020 ? 00:00:00 sshd 10236 27227 27224 0 2020 pts/2 00:00:00 python2 .startx 10236 27328 1 0 2020 pts/2 00:00:00 python3 .startssh 10236 27364 1 0 2020 pts/2 00:00:01 python3 /root/.startdesktop 10236 27381 1 0 2020 pts/2 00:00:01 python3 /root/.sset/.Apkbuild 10236 27385 1 0 2020 pts/2 00:00:00 filebrowser -a 0.0.0.0 -r / --noauth 10236 27395 1 0 2020 pts/2 00:00:00 python3 app.py 10236 27399 1 0 2020 ? 00:00:00 /usr/sbin/sshd 10236 27414 27413 0 2020 pts/2 00:00:00 python3 -m EditOnline -d / 10236 27485 27303 0 2020 /proc/27228/fd/2 00:00:00 /usr/bin/python3 /usr/local/bin/ps -ef
-
使用
adb
检查当前被监视运行的虚进程:$ adb shell "/system/bin/dumpsys activity processes -a" ... All Active App Child Processes: proc #0: PhantomProcessRecord {fd581a0 11377:11166:bash/u0a236} user #0 uid=10236 pid=11377 ppid=11166 knownSince=-16h37m15s430ms killed=false lastCpuTime=0 oom adj=-1000 seq=514 proc #1: PhantomProcessRecord {d272159 11393:11166:bash/u0a236} user #0 uid=10236 pid=11393 ppid=11166 knownSince=-16h37m15s431ms killed=false lastCpuTime=0 oom adj=-1000 seq=514 proc #2: PhantomProcessRecord {9a8811e 11398:11166:python2/u0a236} user #0 uid=10236 pid=11398 ppid=11166 knownSince=-16h37m15s431ms killed=false lastCpuTime=140 timeUsed=+1m2s460ms oom adj=-1000 seq=514 proc #3: PhantomProcessRecord {f4a4dff 11399:11166:aidboot/u0a236} user #0 uid=10236 pid=11399 ppid=11166 knownSince=-16h37m15s432ms killed=false lastCpuTime=260 timeUsed=+58s600ms oom adj=-1000 seq=514 proc #4: PhantomProcessRecord {8a117cc 11412:11166:sshd/u0a236} user #0 uid=10236 pid=11412 ppid=11166 knownSince=-16h37m15s431ms killed=false lastCpuTime=0 oom adj=-1000 seq=514 proc #5: PhantomProcessRecord {59f7a15 11452:11166:bash/u0a236} user #0 uid=10236 pid=11452 ppid=11166 knownSince=-16h37m15s431ms killed=false lastCpuTime=10 timeUsed=0 oom adj=-1000 seq=514 proc #6: PhantomProcessRecord {d57912a 11470:11166:python3/u0a236} user #0 uid=10236 pid=11470 ppid=11166 knownSince=-16h37m15s431ms killed=false lastCpuTime=110 timeUsed=+44s100ms oom adj=-1000 seq=514 proc #7: PhantomProcessRecord {cffcb1b 11537:11166:python3/u0a236} user #0 uid=10236 pid=11537 ppid=11166 knownSince=-16h37m15s431ms killed=false lastCpuTime=310 timeUsed=+1m29s560ms oom adj=-1000 seq=514 proc #8: PhantomProcessRecord {aade4b8 11541:11166:ttyd/u0a236} user #0 uid=10236 pid=11541 ppid=11166 knownSince=-16h37m15s431ms killed=false lastCpuTime=70 timeUsed=+39s700ms oom adj=-1000 seq=514 proc #9: PhantomProcessRecord {60aa291 11554:11166:python3/u0a236} user #0 uid=10236 pid=11554 ppid=11166 knownSince=-16h37m15s431ms killed=false lastCpuTime=510 timeUsed=+2m30s980ms oom adj=-1000 seq=514 proc #10: PhantomProcessRecord {d3595f6 11556:11166:filebrowser/u0a236} user #0 uid=10236 pid=11556 ppid=11166 knownSince=-16h37m15s431ms killed=false lastCpuTime=10 timeUsed=+420ms oom adj=-1000 seq=514 proc #11: PhantomProcessRecord {5c5fdf7 11565:11166:python3/u0a236} user #0 uid=10236 pid=11565 ppid=11166 knownSince=-16h37m15s430ms killed=false lastCpuTime=0 oom adj=-1000 seq=514 proc #12: PhantomProcessRecord {cb89464 11571:11166:sshd/u0a236} user #0 uid=10236 pid=11571 ppid=11166 knownSince=-16h37m15s430ms killed=false lastCpuTime=0 oom adj=-1000 seq=514 proc #13: PhantomProcessRecord {125d6cd 11578:11166:bash/u0a236} user #0 uid=10236 pid=11578 ppid=11166 knownSince=-16h37m15s430ms killed=false lastCpuTime=0 oom adj=-1000 seq=514 proc #14: PhantomProcessRecord {41d1b82 11586:11166:python3/u0a236} user #0 uid=10236 pid=11586 ppid=11166 knownSince=-16h37m15s430ms killed=false lastCpuTime=120 timeUsed=+45s400ms oom adj=-1000 seq=514 proc #15: PhantomProcessRecord {7528293 11590:11166:bash/u0a236} user #0 uid=10236 pid=11590 ppid=11166 knownSince=-16h37m15s430ms killed=false lastCpuTime=0 oom adj=-1000 seq=514 ...
一共有16个虚进程
-
使用
adb
确认允许运行的最大虚进程:$ adb shell "/system/bin/dumpsys activity settings | grep max_phantom_processes" max_phantom_processes=32
-
在 AidLux 的 terminal 中运行 30 个
sha256sum
进程:root@localhost:/home# for i in $(seq 30); do sha256sum /dev/zero & done [1] 19196 [2] 19197 [3] 19198 [4] 19199 [5] 19200 [6] 19201 [7] 19202 [8] 19203 [9] 19204 [10] 19205 [11] 19206 [12] 19207 [13] 19208 [14] 19209 [15] 19210 [16] 19211 [17] 19212 [18] 19213 [19] 19214 [20] 19215 [21] 19216 [22] 19217 [23] 19218 [24] 19219 [25] 19220 [26] 19221 [27] 19222 [28] 19223 [29] 19224 [30] 19225
现在就有16+30=46个虚进程
-
将 AidLux 置于后台, 连接或断开电源, 返回 AidLux 查看, 现在会显示:
root@localhost:/home# [Process completed (signal 9) - press Enter]
-
再次使用
adb
检查当前被监视运行的虚进程:$ adb shell "/system/bin/dumpsys activity processes -a" All Active App Child Processes: proc #0: PhantomProcessRecord {41d1b82 11586:11166:python3/u0a236} user #0 uid=10236 pid=11586 ppid=11166 knownSince=-23h34m14s610ms killed=false lastCpuTime=120 timeUsed=+53s220ms oom adj=-1000 seq=736 proc #1: PhantomProcessRecord {7528293 11590:11166:bash/u0a236} user #0 uid=10236 pid=11590 ppid=11166 knownSince=-23h34m14s610ms killed=false lastCpuTime=27020 timeUsed=+6h19m1s680ms oom adj=-1000 seq=736 proc #2: PhantomProcessRecord {6b1297 19196:11166:sha256sum/u0a236} user #0 uid=10236 pid=19196 ppid=11166 knownSince=-6h35m14s519ms killed=false lastCpuTime=5290 timeUsed=+1h28m4s970ms oom adj=-1000 seq=736 proc #3: PhantomProcessRecord {50b1c84 19197:11166:sha256sum/u0a236} user #0 uid=10236 pid=19197 ppid=11166 knownSince=-6h35m14s518ms killed=false lastCpuTime=6830 timeUsed=+1h28m25s700ms oom adj=-1000 seq=736 proc #4: PhantomProcessRecord {a838c6d 19198:11166:sha256sum/u0a236} user #0 uid=10236 pid=19198 ppid=11166 knownSince=-6h35m14s518ms killed=false lastCpuTime=8310 timeUsed=+1h29m3s290ms oom adj=-1000 seq=736 proc #5: PhantomProcessRecord {81a30a2 19199:11166:sha256sum/u0a236} user #0 uid=10236 pid=19199 ppid=11166 knownSince=-6h35m14s518ms killed=false lastCpuTime=6000 timeUsed=+1h29m29s220ms oom adj=-1000 seq=736 proc #6: PhantomProcessRecord {d444133 19200:11166:sha256sum/u0a236} user #0 uid=10236 pid=19200 ppid=11166 knownSince=-6h35m14s518ms killed=false lastCpuTime=5590 timeUsed=+1h27m32s960ms oom adj=-1000 seq=736 proc #7: PhantomProcessRecord {25f7cf0 19201:11166:sha256sum/u0a236} user #0 uid=10236 pid=19201 ppid=11166 knownSince=-6h35m14s517ms killed=false lastCpuTime=6910 timeUsed=+1h28m0s300ms oom adj=-1000 seq=736 proc #8: PhantomProcessRecord {c598269 19202:11166:sha256sum/u0a236} user #0 uid=10236 pid=19202 ppid=11166 knownSince=-6h35m14s517ms killed=false lastCpuTime=4870 timeUsed=+1h29m15s970ms oom adj=-1000 seq=736 proc #9: PhantomProcessRecord {e0eb4ee 19203:11166:sha256sum/u0a236} user #0 uid=10236 pid=19203 ppid=11166 knownSince=-6h35m14s506ms killed=false lastCpuTime=5830 timeUsed=+1h27m50s700ms oom adj=-1000 seq=736 proc #10: PhantomProcessRecord {577bd8f 19204:11166:sha256sum/u0a236} user #0 uid=10236 pid=19204 ppid=11166 knownSince=-6h35m14s506ms killed=false lastCpuTime=4510 timeUsed=+1h29m55s770ms oom adj=-1000 seq=736 proc #11: PhantomProcessRecord {b57781c 19205:11166:sha256sum/u0a236} user #0 uid=10236 pid=19205 ppid=11166 knownSince=-6h35m14s506ms killed=false lastCpuTime=7980 timeUsed=+1h27m46s430ms oom adj=-1000 seq=736 proc #12: PhantomProcessRecord {c7edc25 19206:11166:sha256sum/u0a236} user #0 uid=10236 pid=19206 ppid=11166 knownSince=-6h35m14s506ms killed=false lastCpuTime=4640 timeUsed=+1h28m47s320ms oom adj=-1000 seq=736 proc #13: PhantomProcessRecord {2b531fa 19207:11166:sha256sum/u0a236} user #0 uid=10236 pid=19207 ppid=11166 knownSince=-6h35m14s506ms killed=false lastCpuTime=5750 timeUsed=+1h29m40s600ms oom adj=-1000 seq=736 proc #14: PhantomProcessRecord {dbca3ab 19208:11166:sha256sum/u0a236} user #0 uid=10236 pid=19208 ppid=11166 knownSince=-6h35m14s505ms killed=false lastCpuTime=9510 timeUsed=+1h28m28s370ms oom adj=-1000 seq=736 proc #15: PhantomProcessRecord {471fa08 19209:11166:sha256sum/u0a236} user #0 uid=10236 pid=19209 ppid=11166 knownSince=-6h35m14s505ms killed=false lastCpuTime=6320 timeUsed=+1h30m28s630ms oom adj=-1000 seq=736 proc #16: PhantomProcessRecord {8e615a1 19210:11166:sha256sum/u0a236} user #0 uid=10236 pid=19210 ppid=11166 knownSince=-6h35m14s505ms killed=false lastCpuTime=7320 timeUsed=+1h29m33s470ms oom adj=-1000 seq=736 proc #17: PhantomProcessRecord {1473c6 19211:11166:sha256sum/u0a236} user #0 uid=10236 pid=19211 ppid=11166 knownSince=-6h35m14s505ms killed=false lastCpuTime=5030 timeUsed=+1h28m34s990ms oom adj=-1000 seq=736 proc #18: PhantomProcessRecord {51fcf87 19212:11166:sha256sum/u0a236} user #0 uid=10236 pid=19212 ppid=11166 knownSince=-6h35m14s505ms killed=false lastCpuTime=8890 timeUsed=+1h30m28s450ms oom adj=-1000 seq=736 proc #19: PhantomProcessRecord {930aeb4 19213:11166:sha256sum/u0a236} user #0 uid=10236 pid=19213 ppid=11166 knownSince=-6h35m14s504ms killed=false lastCpuTime=6800 timeUsed=+1h28m16s510ms oom adj=-1000 seq=736 proc #20: PhantomProcessRecord {22d6add 19214:11166:sha256sum/u0a236} user #0 uid=10236 pid=19214 ppid=11166 knownSince=-6h35m14s504ms killed=false lastCpuTime=5250 timeUsed=+1h27m59s660ms oom adj=-1000 seq=736 proc #21: PhantomProcessRecord {7d40652 19215:11166:sha256sum/u0a236} user #0 uid=10236 pid=19215 ppid=11166 knownSince=-6h35m14s504ms killed=false lastCpuTime=5180 timeUsed=+1h28m49s510ms oom adj=-1000 seq=736 proc #22: PhantomProcessRecord {49fdd23 19216:11166:sha256sum/u0a236} user #0 uid=10236 pid=19216 ppid=11166 knownSince=-6h35m14s504ms killed=false lastCpuTime=5400 timeUsed=+1h30m26s100ms oom adj=-1000 seq=736 proc #23: PhantomProcessRecord {9840220 19217:11166:sha256sum/u0a236} user #0 uid=10236 pid=19217 ppid=11166 knownSince=-6h35m14s504ms killed=false lastCpuTime=7340 timeUsed=+1h30m12s430ms oom adj=-1000 seq=736 proc #24: PhantomProcessRecord {a9ad7d9 19218:11166:sha256sum/u0a236} user #0 uid=10236 pid=19218 ppid=11166 knownSince=-6h35m14s504ms killed=false lastCpuTime=4360 timeUsed=+1h28m28s440ms oom adj=-1000 seq=736 proc #25: PhantomProcessRecord {c88359e 19219:11166:sha256sum/u0a236} user #0 uid=10236 pid=19219 ppid=11166 knownSince=-6h35m14s504ms killed=false lastCpuTime=6750 timeUsed=+1h29m35s820ms oom adj=-1000 seq=736 proc #26: PhantomProcessRecord {c89287f 19220:11166:sha256sum/u0a236} user #0 uid=10236 pid=19220 ppid=11166 knownSince=-6h35m14s504ms killed=false lastCpuTime=6910 timeUsed=+1h28m52s630ms oom adj=-1000 seq=736 proc #27: PhantomProcessRecord {1f7204c 19221:11166:sha256sum/u0a236} user #0 uid=10236 pid=19221 ppid=11166 knownSince=-6h35m14s504ms killed=false lastCpuTime=7650 timeUsed=+1h28m55s830ms oom adj=-1000 seq=736 proc #28: PhantomProcessRecord {8d81895 19222:11166:sha256sum/u0a236} user #0 uid=10236 pid=19222 ppid=11166 knownSince=-6h35m14s504ms killed=false lastCpuTime=4640 timeUsed=+1h29m3s30ms oom adj=-1000 seq=736 proc #29: PhantomProcessRecord {3be0daa 19223:11166:sha256sum/u0a236} user #0 uid=10236 pid=19223 ppid=11166 knownSince=-6h35m14s503ms killed=false lastCpuTime=7060 timeUsed=+1h28m17s230ms oom adj=-1000 seq=736 proc #30: PhantomProcessRecord {b91cd9b 19224:11166:sha256sum/u0a236} user #0 uid=10236 pid=19224 ppid=11166 knownSince=-6h35m14s503ms killed=false lastCpuTime=6250 timeUsed=+1h28m38s110ms oom adj=-1000 seq=736 proc #31: PhantomProcessRecord {a9bf538 19225:11166:sha256sum/u0a236} user #0 uid=10236 pid=19225 ppid=11166 knownSince=-6h35m14s503ms killed=false lastCpuTime=6370 timeUsed=+1h29m42s830ms oom adj=-1000 seq=736
剩下32个虚进程
-
检测被杀死的虚进程, 查看日志:
$ adb logcat -d -e '^Killing PhantomProcessRecord' --------- beginning of system 03-22 10:30:08.262 1031 1387 I ActivityManager: Killing PhantomProcessRecord {fd581a0 11377:11166:bash/u0a236}: Trimming phantom processes 03-22 10:30:08.263 1031 1387 I ActivityManager: Killing PhantomProcessRecord {d272159 11393:11166:bash/u0a236}: Trimming phantom processes 03-22 10:30:08.263 1031 1387 I ActivityManager: Killing PhantomProcessRecord {9a8811e 11398:11166:python2/u0a236}: Trimming phantom processes 03-22 10:30:08.263 1031 1387 I ActivityManager: Killing PhantomProcessRecord {f4a4dff 11399:11166:aidboot/u0a236}: Trimming phantom processes 03-22 10:30:08.263 1031 1387 I ActivityManager: Killing PhantomProcessRecord {8a117cc 11412:11166:sshd/u0a236}: Trimming phantom processes 03-22 10:30:08.263 1031 1387 I ActivityManager: Killing PhantomProcessRecord {59f7a15 11452:11166:bash/u0a236}: Trimming phantom processes 03-22 10:30:08.263 1031 1387 I ActivityManager: Killing PhantomProcessRecord {d57912a 11470:11166:python3/u0a236}: Trimming phantom processes 03-22 10:30:08.263 1031 1387 I ActivityManager: Killing PhantomProcessRecord {cffcb1b 11537:11166:python3/u0a236}: Trimming phantom processes 03-22 10:30:08.263 1031 1387 I ActivityManager: Killing PhantomProcessRecord {aade4b8 11541:11166:ttyd/u0a236}: Trimming phantom processes 03-22 10:30:08.263 1031 1387 I ActivityManager: Killing PhantomProcessRecord {60aa291 11554:11166:python3/u0a236}: Trimming phantom processes 03-22 10:30:08.263 1031 1387 I ActivityManager: Killing PhantomProcessRecord {d3595f6 11556:11166:filebrowser/u0a236}: Trimming phantom processes 03-22 10:30:08.264 1031 1387 I ActivityManager: Killing PhantomProcessRecord {5c5fdf7 11565:11166:python3/u0a236}: Trimming phantom processes 03-22 10:30:08.264 1031 1387 I ActivityManager: Killing PhantomProcessRecord {cb89464 11571:11166:sshd/u0a236}: Trimming phantom processes 03-22 10:30:08.264 1031 1387 I ActivityManager: Killing PhantomProcessRecord {125d6cd 11578:11166:bash/u0a236}: Trimming phantom processes
杀掉了14个虚进程, 46-32=14 , 验证逻辑正确.
解决
禁用杀死虚进程
根据源代码中的trimPhantomProcessesIfNecessary()
for
循环, 将max_phantom_processes
设置为Integer.MAX_VALUE
(2147483647
), 以禁止杀死虚进程, 因为if (mService.mConstants.MAX_PHANTOM_PROCESSES < mPhantomProcesses.size())
条件将总是失败
-
root
su -c "/system/bin/device_config put activity_manager max_phantom_processes 2147483647"
-
adb
adb shell "/system/bin/device_config put activity_manager max_phantom_processes 2147483647"
但存在以下 3 种情况可能将该值重置为默认值:
- Android 系统重启
- Android 系统崩溃
gms
同步更新配置
可以在禁用杀死虚进程之前通过禁止设备配置同步来解决此问题
禁止设备配置同步:
-
root
su -c "/system/bin/device_config set_sync_disabled_for_tests persistent"
-
adb
adb shell "/system/bin/device_config set_sync_disabled_for_tests persistent"
但该设置存在系统无法从无限重启, 崩溃和错误配置值中恢复的风险!
如果没有gms
服务, 我觉得没必要设置, 可以自行测试一下.
另附重新启用设备配置同步和检查设备配置同步状态方法
重新启用设备配置同步:
-
root
su -c "/system/bin/device_config set_sync_disabled_for_tests none"
-
adb
adb shell "/system/bin/device_config set_sync_disabled_for_tests none"
检查设备配置同步状态:
-
root
su -c "/system/bin/device_config is_sync_disabled_for_tests"
-
adb
adb shell "/system/bin/device_config is_sync_disabled_for_tests"
禁用杀死虚进程后进行测试, 然后检查被监视运行的虚进程:
$ adb shell "/system/bin/dumpsys activity processes -a"
...
All Active App Child Processes:
proc #0: PhantomProcessRecord {e95d78f 32041:31842:bash/u0a236}
user #0 uid=10236 pid=32041 ppid=31842 knownSince=-1m3s420ms killed=false
lastCpuTime=0 oom adj=-1000 seq=768
proc #1: PhantomProcessRecord {5148a1c 32064:31842:bash/u0a236}
user #0 uid=10236 pid=32064 ppid=31842 knownSince=-1m3s420ms killed=false
lastCpuTime=0 oom adj=-1000 seq=768
proc #2: PhantomProcessRecord {97b8625 32069:31842:python2/u0a236}
user #0 uid=10236 pid=32069 ppid=31842 knownSince=-1m3s420ms killed=false
lastCpuTime=20 timeUsed=0 oom adj=-1000 seq=768
proc #3: PhantomProcessRecord {21593fa 32070:31842:sshd/u0a236}
user #0 uid=10236 pid=32070 ppid=31842 knownSince=-1m3s419ms killed=false
lastCpuTime=0 oom adj=-1000 seq=768
proc #4: PhantomProcessRecord {3a25dab 32071:31842:aidboot/u0a236}
user #0 uid=10236 pid=32071 ppid=31842 knownSince=-1m3s419ms killed=false
lastCpuTime=20 timeUsed=0 oom adj=-1000 seq=768
proc #5: PhantomProcessRecord {1ee2c08 32125:31842:bash/u0a236}
user #0 uid=10236 pid=32125 ppid=31842 knownSince=-1m3s419ms killed=false
lastCpuTime=0 oom adj=-1000 seq=768
proc #6: PhantomProcessRecord {a035fa1 32144:31842:python3/u0a236}
user #0 uid=10236 pid=32144 ppid=31842 knownSince=-1m3s419ms killed=false
lastCpuTime=10 timeUsed=0 oom adj=-1000 seq=768
proc #7: PhantomProcessRecord {218f5c6 32209:31842:python3/u0a236}
user #0 uid=10236 pid=32209 ppid=31842 knownSince=-1m3s419ms killed=false
lastCpuTime=30 timeUsed=0 oom adj=-1000 seq=768
proc #8: PhantomProcessRecord {ca72987 32213:31842:ttyd/u0a236}
user #0 uid=10236 pid=32213 ppid=31842 knownSince=-1m3s419ms killed=false
lastCpuTime=0 oom adj=-1000 seq=768
proc #9: PhantomProcessRecord {73e00b4 32228:31842:python3/u0a236}
user #0 uid=10236 pid=32228 ppid=31842 knownSince=-1m3s419ms killed=false
lastCpuTime=40 timeUsed=0 oom adj=-1000 seq=768
proc #10: PhantomProcessRecord {8d554dd 32232:31842:filebrowser/u0a236}
user #0 uid=10236 pid=32232 ppid=31842 knownSince=-1m3s419ms killed=false
lastCpuTime=0 oom adj=-1000 seq=768
proc #11: PhantomProcessRecord {29ea852 32240:31842:python3/u0a236}
user #0 uid=10236 pid=32240 ppid=31842 knownSince=-1m3s419ms killed=false
lastCpuTime=0 oom adj=-1000 seq=768
proc #12: PhantomProcessRecord {642d723 32246:31842:sshd/u0a236}
user #0 uid=10236 pid=32246 ppid=31842 knownSince=-1m3s418ms killed=false
lastCpuTime=0 oom adj=-1000 seq=768
proc #13: PhantomProcessRecord {147420 32252:31842:bash/u0a236}
user #0 uid=10236 pid=32252 ppid=31842 knownSince=-1m3s418ms killed=false
lastCpuTime=0 oom adj=-1000 seq=768
proc #14: PhantomProcessRecord {4d761d9 32253:31842:python3/u0a236}
user #0 uid=10236 pid=32253 ppid=31842 knownSince=-1m3s418ms killed=false
lastCpuTime=10 timeUsed=0 oom adj=-1000 seq=768
proc #15: PhantomProcessRecord {65af79e 32264:31842:bash/u0a236}
user #0 uid=10236 pid=32264 ppid=31842 knownSince=-1m3s418ms killed=false
lastCpuTime=0 oom adj=-1000 seq=768
proc #16: PhantomProcessRecord {e61c27f 32468:31842:sha256sum/u0a236}
user #0 uid=10236 pid=32468 ppid=31842 knownSince=-1m3s418ms killed=false
lastCpuTime=11970 timeUsed=0 oom adj=-1000 seq=768
proc #17: PhantomProcessRecord {61cb24c 32469:31842:sha256sum/u0a236}
user #0 uid=10236 pid=32469 ppid=31842 knownSince=-1m3s418ms killed=false
lastCpuTime=11090 timeUsed=0 oom adj=-1000 seq=768
proc #18: PhantomProcessRecord {b534295 32470:31842:sha256sum/u0a236}
user #0 uid=10236 pid=32470 ppid=31842 knownSince=-1m3s418ms killed=false
lastCpuTime=15150 timeUsed=0 oom adj=-1000 seq=768
proc #19: PhantomProcessRecord {4faefaa 32471:31842:sha256sum/u0a236}
user #0 uid=10236 pid=32471 ppid=31842 knownSince=-1m3s418ms killed=false
lastCpuTime=10570 timeUsed=0 oom adj=-1000 seq=768
proc #20: PhantomProcessRecord {b5a079b 32472:31842:sha256sum/u0a236}
user #0 uid=10236 pid=32472 ppid=31842 knownSince=-1m3s418ms killed=false
lastCpuTime=15140 timeUsed=0 oom adj=-1000 seq=768
proc #21: PhantomProcessRecord {88a738 32473:31842:sha256sum/u0a236}
user #0 uid=10236 pid=32473 ppid=31842 knownSince=-1m3s418ms killed=false
lastCpuTime=12280 timeUsed=0 oom adj=-1000 seq=768
proc #22: PhantomProcessRecord {a727311 32474:31842:sha256sum/u0a236}
user #0 uid=10236 pid=32474 ppid=31842 knownSince=-1m3s418ms killed=false
lastCpuTime=14780 timeUsed=0 oom adj=-1000 seq=768
proc #23: PhantomProcessRecord {1f05c76 32475:31842:sha256sum/u0a236}
user #0 uid=10236 pid=32475 ppid=31842 knownSince=-1m3s418ms killed=false
lastCpuTime=16040 timeUsed=0 oom adj=-1000 seq=768
proc #24: PhantomProcessRecord {8c78277 32476:31842:sha256sum/u0a236}
user #0 uid=10236 pid=32476 ppid=31842 knownSince=-1m3s418ms killed=false
lastCpuTime=12790 timeUsed=0 oom adj=-1000 seq=768
proc #25: PhantomProcessRecord {5bcfee4 32477:31842:sha256sum/u0a236}
user #0 uid=10236 pid=32477 ppid=31842 knownSince=-1m3s418ms killed=false
lastCpuTime=17500 timeUsed=0 oom adj=-1000 seq=768
proc #26: PhantomProcessRecord {f7a2f4d 32478:31842:sha256sum/u0a236}
user #0 uid=10236 pid=32478 ppid=31842 knownSince=-1m3s418ms killed=false
lastCpuTime=14440 timeUsed=0 oom adj=-1000 seq=768
proc #27: PhantomProcessRecord {3fdca02 32479:31842:sha256sum/u0a236}
user #0 uid=10236 pid=32479 ppid=31842 knownSince=-1m3s418ms killed=false
lastCpuTime=14330 timeUsed=0 oom adj=-1000 seq=768
proc #28: PhantomProcessRecord {627cf13 32480:31842:sha256sum/u0a236}
user #0 uid=10236 pid=32480 ppid=31842 knownSince=-1m3s418ms killed=false
lastCpuTime=15050 timeUsed=0 oom adj=-1000 seq=768
proc #29: PhantomProcessRecord {bbd2550 32481:31842:sha256sum/u0a236}
user #0 uid=10236 pid=32481 ppid=31842 knownSince=-1m3s418ms killed=false
lastCpuTime=10950 timeUsed=0 oom adj=-1000 seq=768
proc #30: PhantomProcessRecord {cc77349 32482:31842:sha256sum/u0a236}
user #0 uid=10236 pid=32482 ppid=31842 knownSince=-1m3s417ms killed=false
lastCpuTime=15340 timeUsed=0 oom adj=-1000 seq=768
proc #31: PhantomProcessRecord {982844e 32483:31842:sha256sum/u0a236}
user #0 uid=10236 pid=32483 ppid=31842 knownSince=-1m3s417ms killed=false
lastCpuTime=17530 timeUsed=0 oom adj=-1000 seq=768
proc #32: PhantomProcessRecord {336496f 32484:31842:sha256sum/u0a236}
user #0 uid=10236 pid=32484 ppid=31842 knownSince=-1m3s417ms killed=false
lastCpuTime=10520 timeUsed=0 oom adj=-1000 seq=768
proc #33: PhantomProcessRecord {357467c 32485:31842:sha256sum/u0a236}
user #0 uid=10236 pid=32485 ppid=31842 knownSince=-1m3s417ms killed=false
lastCpuTime=11180 timeUsed=0 oom adj=-1000 seq=768
proc #34: PhantomProcessRecord {38afb05 32486:31842:sha256sum/u0a236}
user #0 uid=10236 pid=32486 ppid=31842 knownSince=-1m3s417ms killed=false
lastCpuTime=17740 timeUsed=0 oom adj=-1000 seq=768
proc #35: PhantomProcessRecord {586975a 32487:31842:sha256sum/u0a236}
user #0 uid=10236 pid=32487 ppid=31842 knownSince=-1m3s417ms killed=false
lastCpuTime=17250 timeUsed=0 oom adj=-1000 seq=768
proc #36: PhantomProcessRecord {6080d8b 32488:31842:sha256sum/u0a236}
user #0 uid=10236 pid=32488 ppid=31842 knownSince=-1m3s417ms killed=false
lastCpuTime=13000 timeUsed=0 oom adj=-1000 seq=768
proc #37: PhantomProcessRecord {a104e68 32489:31842:sha256sum/u0a236}
user #0 uid=10236 pid=32489 ppid=31842 knownSince=-1m3s417ms killed=false
lastCpuTime=10440 timeUsed=0 oom adj=-1000 seq=768
proc #38: PhantomProcessRecord {d454281 32490:31842:sha256sum/u0a236}
user #0 uid=10236 pid=32490 ppid=31842 knownSince=-1m3s417ms killed=false
lastCpuTime=14090 timeUsed=0 oom adj=-1000 seq=768
proc #39: PhantomProcessRecord {186cf26 32491:31842:sha256sum/u0a236}
user #0 uid=10236 pid=32491 ppid=31842 knownSince=-1m3s416ms killed=false
lastCpuTime=14180 timeUsed=0 oom adj=-1000 seq=768
proc #40: PhantomProcessRecord {6e7f767 32492:31842:sha256sum/u0a236}
user #0 uid=10236 pid=32492 ppid=31842 knownSince=-1m3s416ms killed=false
lastCpuTime=16500 timeUsed=0 oom adj=-1000 seq=768
proc #41: PhantomProcessRecord {ecfe914 32493:31842:sha256sum/u0a236}
user #0 uid=10236 pid=32493 ppid=31842 knownSince=-1m3s416ms killed=false
lastCpuTime=13990 timeUsed=0 oom adj=-1000 seq=768
proc #42: PhantomProcessRecord {10285bd 32494:31842:sha256sum/u0a236}
user #0 uid=10236 pid=32494 ppid=31842 knownSince=-1m3s416ms killed=false
lastCpuTime=12440 timeUsed=0 oom adj=-1000 seq=768
proc #43: PhantomProcessRecord {b7b2 32496:31842:sha256sum/u0a236}
user #0 uid=10236 pid=32496 ppid=31842 knownSince=-1m3s416ms killed=false
lastCpuTime=11560 timeUsed=0 oom adj=-1000 seq=768
proc #44: PhantomProcessRecord {df2a303 32497:31842:sha256sum/u0a236}
user #0 uid=10236 pid=32497 ppid=31842 knownSince=-1m3s416ms killed=false
lastCpuTime=15530 timeUsed=0 oom adj=-1000 seq=768
proc #45: PhantomProcessRecord {54c8280 32498:31842:sha256sum/u0a236}
user #0 uid=10236 pid=32498 ppid=31842 knownSince=-1m3s416ms killed=false
lastCpuTime=9950 timeUsed=0 oom adj=-1000 seq=768
...
一共46个虚进程全部存活
Android 12L 或 Android 13
添加设置切换虚进程监视在开发选项的新补丁已经被合并到了Android 12L的AOSP中,使用Android 12L或Android 13的设备可以依据此特性解决此问题.
经验证, 该特性虽然已经被合并, 但是在生产设备中该功能菜单并未显示, 所以只能通过标识符去关闭:
adb shell settings put global settings_enable_monitor_phantom_procs false
其他
- adb
- scrcpy 这里推荐一个开源软件, 其自带 adb 依赖, 提供了显示和控制通过 USB (或通过 TCP/IP) 连接的 Android 设备的功能, 不需要 root, 无侵入性, 秒连.
参考
- PhantomProcessList.java;bpv=1
- PhantomProcessList.java;l=454
- max_phantom_processes
- Android Phantom, Cached And Empty Processes
- Phantom Process Killing In Android 12 Is Breaking Apps