为什么我不能从某些设备获得HPROF转储?

时间:2011-04-12 18:56:39

标签: android hprof

正如许多有用网站所详述的,分析Android应用程序内存使用情况的一种方法是执行“kill -10 [PID]”来触发HPROF转储。这似乎适用于某些设备,而logcat通常包含以下内容:

I/dalvikvm(32170): threadid=3: reacting to signal 10
I/dalvikvm(32170): SIGUSR1 forcing GC and HPROF dump
I/dalvikvm(32170): hprof: dumping VM heap to "/data/misc/heap-dump-tm1302633572-pid32170.hprof-hptemp".
I/dalvikvm(32170): hprof: dumping heap strings to "/data/misc/heap-dump-tm1302633572-    pid32170.hprof".
I/dalvikvm(32170): hprof: heap dump completed, temp file removed

但是,在其他设备上,执行“kill -10”会导致:

I/dalvikvm( 5687): threadid=4: reacting to signal 10
I/dalvikvm( 5687): SIGUSR1 forcing GC (no HPROF)

我尝试使用的所有设备都是root用户,我确保chmod / data / misc为777.执行“kill -10”后我没有收到任何错误消息。

如果它有用,这里是我获得HPROF转储的设备: HTC ACE(Desire HD),HTC G1,HTC Nexus One(T-Mobile)

以下是我没有获得HPROF转储的设备: Nexus S,Droid,Droid X,Nexus One(AT& T)

为什么我不能从某些设备获得HPROF转储,是否有任何我可以做的事情来允许我获得转储?

1 个答案:

答案 0 :(得分:8)

使用DDMS。单击“转储HPROF文件”工具栏图标 - 它看起来像带有向下箭头的半满罐。刚刚在Nexus S上尝试时,它就像一个魅力。