为什么某些设备无法获取HPROF转储文件?

5

如许多有益的网站所详细介绍的那样,分析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权限,并且我已经确保将/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个回答

8

使用DDMS。单击“Dump HPROF File”工具栏图标——它看起来像一个半满的罐子,带有向下指向的箭头。我刚刚在Nexus S上尝试时非常成功。


非常好,谢谢。看起来这也让我不必再用hprof-conv进行转换了。 - Rico Yao
1
为了让未来的读者清楚,@Jan Berkel 提到的功能是 SIGUSR1 强制 HPROF 转储,OP 以前使用过。DDMS HPROF 方法仍然有效,据我所知。 - CommonsWare
我希望Android团队能够支持稳定的提交链接,这是更新后的链接:https://android.googlesource.com/platform/dalvik/+/b037a464512c0721bdca969ae19cce3d4b17b083 - Jan Berkel
有没有Eclipse选项可以显示/隐藏DDMS HPROF转储图标? 我曾经在DDMS透视图中看到它(带有向下箭头的半满罐子),但现在它消失了(?)。 - gcl1
1
如果在您的设备视图工具栏中找不到它,请单击该工具栏右侧的小下箭头,查看是否出现。 - CommonsWare
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接