网络文章
logd 进程
logd 进程主要工作原理参考 gityuan 文章。总结一下就是:java 层使用的 Log 函数最终会写入到 logd 进程。因此,如果 logd 进程过高,表明应用输出比较频繁,可能就是 应用在循环中出现错误。
CPU usage from 13374ms to 983ms ago (2022-06-24 14:09:08.713 to 2022-06-24 14:09:21.105) with 99% awake:
106% 605/logd: 39% user + 67% kernel / faults: 10 minor
102% 27323/《自己进程》: 21% user + 80% kernel / faults: 1823 minor
40% 1295/system_server: 19% user + 21% kernel / faults: 5099 minor 3 major
前两个进程一个是 logd 一个是自己进程,说明自己进程一直在跑,logd 过高又说明自己进程在不断地输出日志。此时切换到 logcat 中可以看到不断地刷新
// 应用不到,返回结果不同
2022-06-24 15:20:12.820 31374-8057/《自己进程》 W/libc: malloc(144018000) failed: returning null pointer
其中 31374-8057 中前者表示进程 pid,后者表示当前输出的线程。在结合 anr 日志,可以很明显看出出现问题的线程当前正在进行的操作。