Android统计应用程序/进程的线程数

Android统计应用程序/进程的线程数,android,multithreading,adb,Android,Multithreading,Adb,我需要监控我的应用程序的行为,并收集有关线程创建/销毁方式的统计信息。我知道DDMS有一个实时显示此信息的线程视图,但是我可以通过命令行获得相同的信息吗?我想创建我自己的工具,该工具将记录此信息并处理它 澄清: 我要寻找的是一个可以通过ADB传递的命令,它将列出在进程下运行的线程。通过这种方式,我可以在不同的时间点运行该命令,以获取一段时间内所有线程的状态(线程数及其名称)。根据我有限的知识,我可能完全错了,请看一下: public static Map<Thread,StackTrace

我需要监控我的应用程序的行为,并收集有关线程创建/销毁方式的统计信息。我知道DDMS有一个实时显示此信息的线程视图,但是我可以通过命令行获得相同的信息吗?我想创建我自己的工具,该工具将记录此信息并处理它

澄清:
我要寻找的是一个可以通过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
    是流程的PID
    com.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