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

Ric*_*Yao 5 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
Run Code Online (Sandbox Code Playgroud)

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

I/dalvikvm( 5687): threadid=4: reacting to signal 10
I/dalvikvm( 5687): SIGUSR1 forcing GC (no HPROF)
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用的所有设备都是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转储,是否有什么可以让我获得转储?

Com*_*are 8

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