Android统计应用程序/进程的线程数
我需要监控我的应用程序的行为,并收集有关线程创建/销毁方式的统计信息。我知道DDMS有一个实时显示此信息的线程视图,但是我可以通过命令行获得相同的信息吗?我想创建我自己的工具,该工具将记录此信息并处理它 澄清:Android统计应用程序/进程的线程数,android,multithreading,adb,Android,Multithreading,Adb,我需要监控我的应用程序的行为,并收集有关线程创建/销毁方式的统计信息。我知道DDMS有一个实时显示此信息的线程视图,但是我可以通过命令行获得相同的信息吗?我想创建我自己的工具,该工具将记录此信息并处理它 澄清: 我要寻找的是一个可以通过ADB传递的命令,它将列出在进程下运行的线程。通过这种方式,我可以在不同的时间点运行该命令,以获取一段时间内所有线程的状态(线程数及其名称)。根据我有限的知识,我可能完全错了,请看一下: public static Map<Thread,StackTrace
我要寻找的是一个可以通过ADB传递的命令,它将列出在进程下运行的线程。通过这种方式,我可以在不同的时间点运行该命令,以获取一段时间内所有线程的状态(线程数及其名称)。根据我有限的知识,我可能完全错了,请看一下:
public static Map<Thread,StackTraceElement[]> getAllStackTraces()
public静态映射getAllStackTraces()
文件:
返回所有活动线程的堆栈跟踪映射。地图键是
线程和每个映射值都是一个StackTraceElement数组
表示对应线程的堆栈转储。返回
堆栈跟踪采用为getStackTrace方法指定的格式。
调用此方法时,线程可能正在执行。堆栈
每个线程的跟踪只表示一个快照和每个堆栈跟踪
可能在不同的时间获得。将创建一个零长度数组
如果虚拟机没有堆栈跟踪,则在映射值中返回
关于线程的信息
我希望这有帮助。有两种方法可以做到这一点。
在Ubuntu12.10上的摩托罗拉Moto G上试过这个
top
(在ADB Shell下)列出设备上运行的所有线程
因此,您可以使用grep
$ top -t | grep com.whatsapp
PID TID PR CPU% S VSS RSS PCY UID Thread Proc
15210 15210 0 0% S 550076K 51180K bg u0_a96 com.whatsapp com.whatsapp
15210 15214 0 0% S 550076K 51180K bg u0_a96 GC com.whatsapp
15210 15215 0 0% S 550076K 51180K bg u0_a96 Signal Catcher com.whatsapp
15210 15216 0 0% S 550076K 51180K bg u0_a96 Compiler com.whatsapp
要在主机上运行此功能,只需使用
$ adb shell top -t | grep com.whatsapp
如果不支持grep
,请使用ps
$ ps -p 15210 -t
USER PID PPID VSIZE RSS PRIO NICE RTPRI SCHED WCHAN PC NAME
u0_a96 15210 275 549036 52136 20 0 0 0 ffffffff 00000000 S com.whatsapp
u0_a96 15214 15210 549036 52136 20 0 0 0 ffffffff 00000000 S GC
u0_a96 15215 15210 549036 52136 20 0 0 0 ffffffff 00000000 S Signal Catcher
u0_a96 15216 15210 549036 52136 20 0 0 0 ffffffff 00000000 S Compiler
其中15210
是流程的PIDcom.whatsapp
希望这能解决您的问题,让我知道它是否有效。请更具体地说明您正在努力实现的目标。你有一些代码要显示吗?您尝试了什么?我尝试了cat/proc//status,这只提供了线程数。有没有更好的方法来获取线程的更多细节?
$ ps -p 15210 -t
USER PID PPID VSIZE RSS PRIO NICE RTPRI SCHED WCHAN PC NAME
u0_a96 15210 275 549036 52136 20 0 0 0 ffffffff 00000000 S com.whatsapp
u0_a96 15214 15210 549036 52136 20 0 0 0 ffffffff 00000000 S GC
u0_a96 15215 15210 549036 52136 20 0 0 0 ffffffff 00000000 S Signal Catcher
u0_a96 15216 15210 549036 52136 20 0 0 0 ffffffff 00000000 S Compiler