看一下这个视频这里,在大约35分钟的时候他们展示了如何对你的应用进行性能分析,不确定是否可以实时进行。
更多信息请参考
milk.com上的这篇文章:
自Android 1.6以来,我就没有尝试过这个功能了,也不确定是否可以实时执行,但是您曾经可以通过以下方式生成堆数据:
在设备上获取命令行shell:
$ adb shell
您可以使用id命令验证是否以root身份运行。响应应该类似于uid=0(root)gid=0(root)。如果不是,请键入su并重试。如果su失败,则无法继续。
接下来,请确保目标目录存在:
# mkdir /data/misc
# chmod 777 /data/misc
使用ps或DDMS确定您的应用程序的进程ID,然后向目标进程发送SIGUSR1信号:
# kill -10 <pid>
信号会导致GC,随后进行堆转储(准确地说,它们实际上是同时发生的,但堆转储中的结果反映了GC后的状态)。这可能需要几秒钟的时间,因此您必须观察GC日志消息以了解何时完成。
接下来:
# ls /data/misc/heap-dump*
# exit
使用ls命令检查文件名,然后使用exit命令退出设备命令行。
您应该会看到两个输出文件,分别命名为/data/misc/heap-dump-BLAH-BLAH.hprof和.hprof-head,其中BLAH是运行时生成的值,确保文件名唯一。将它们从设备中取出并删除设备端的副本:
$ adb pull /data/misc/heap-dump-BLAH-BLAH.hprof tail.hprof
$ adb pull /data/misc/heap-dump-BLAH-BLAH.hprof-head head.hprof
$ adb shell rm /data/misc/heap-dump-BLAH-BLAH.hprof /data/misc/heap-dump-BLAH-BLAH.hprof-head
将它们合并在一起并删除中间步骤:
$ cat head.hprof tail.hprof > dump.hprof
$ rm head.hprof tail.hprof
现在您已经在dump.hprof中拥有了hprof转储。
数据文件格式与常见的hprof格式略有不同,由于许可限制,修改后的hat工具无法分发。可以使用转换工具hprof-conv从输出中剥离Android特定部分。该工具首次包含在1.5中,但也适用于旧版本的Android。
转换后的输出应该可以与任何hprof数据分析器一起使用,包括Sun JDK中免费提供的jhat和Eclipse MAT。