5
正如许多有用的网站所详述的,分析Android应用程序内存使用情况的一种方法是执行“kill -10 [PID]”来触发HPROF转储。这似乎在某些设备上工作,并且logcat的通常包含这样的事情:为什么我无法从某些设备获得HPROF转储?
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
然而,在其他设备上,执行“杀-10”的结果是:
I/dalvikvm(5687): threadid=4: reacting to signal 10
I/dalvikvm(5687): SIGUSR1 forcing GC (no HPROF)
所有设备我试着这是根植,我已经确保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转储和有什么我可以做的,让我获得转储?
非常好,谢谢。看起来这样也可以避免我必须用hprof-conv转换它。 – 2011-04-13 18:05:34
这里是禁用功能的区别: http://android.git.kernel.org/?p=platform/dalvik.git;a=commitdiff;h=b037a464512c0721bdca969ae19cce3d4b17b083 – 2011-08-22 14:37:47
为了让将来的读者清楚,功能@Jan Berkel指的是SIGUSR1强制OP使用的HPROF转储。 DDMS HPROF方法仍然适用于AFAIK。 – CommonsWare 2011-08-22 14:47:46