当我使用 TOP 命令时,我可以获得以下信息:
shell@android:/ $ top -n 1
User 31%, System 10%, IOW 0%, IRQ 0%
User 346 + Nice 10 + Sys 120 + Idle 637 + IOW 6 + IRQ 0 + SIRQ 2 = 1121
PID PR CPU% S #THR VSS RSS PCY UID Name
481 1 26% S 89 762832K 81688K fg system system_server
1699 0 5% S 27 676472K 39092K fg u0_a72 wm.cs.systemmonitor
11243 0 3% S 28 673140K 29796K bg u0_a111 com.weather.Weather
13327 2 1% S 23 680472K 35844K bg u0_a83 com.rhmsoft.fm
659 0 1% S 17 663044K 33136K bg u0_a13 android.process.media
20260 1 0% R 1 1208K 508K shell top
我们可以看到它CPU%
是四舍五入到整数,有什么方法可以得到CPU%
更高精度的过程吗?
-- 对赏金的澄清 -- 亚历克斯
该问题涉及Android系统,最好是非root设备。虽然 Android 为 Java 应用程序提供了高级分析技术,但用于本机代码 (C++) 的工具是有限的。Android 上的top命令允许显示系统中运行的所有线程的统计信息,包括 Java 线程和 C++ 线程。我正在寻找一个有助于完成以下任务的答案:
我的应用在后台不活动时使用 2% 的 CPU,而它应该低于 0.1%。如果我运行top -t
,对于属于我的进程的所有 15 个线程,我得到 0%(一些线程是 Java 线程,例如 Main、UI 线程;其他是从不附加到 JVM 的 pthread)。我怎么能猜出哪个线程吃掉了电池?
我很高兴能获得有关此意外活动的更多详细信息,并且 Android为 Java 线程提供了很好的帮助程序,例如TraceView 。任何有关本机代码工具的见解都将受到高度赞赏。