2011-04-12 86 views
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轉儲和有什麼我可以做的,讓我獲得轉儲?

回答

8

使用DDMS。點擊「轉儲HPROF文件」工具欄圖標 - 它看起來像一個半滿的罐子,並帶有一個向下的箭頭。當我在Nexus S上試用時,像一個魅力工作。

+0

非常好,謝謝。看起來這樣也可以避免我必須用hprof-conv轉換它。 – 2011-04-13 18:05:34

+0

這裏是禁用功能的區別: http://android.git.kernel.org/?p=platform/dalvik.git;a=commitdiff;h=b037a464512c0721bdca969ae19cce3d4b17b083 – 2011-08-22 14:37:47

+1

爲了讓將來的讀者清楚,功能@Jan Berkel指的是SIGUSR1強制OP使用的HPROF轉儲。 DDMS HPROF方法仍然適用於AFAIK。 – CommonsWare 2011-08-22 14:47:46

相關問題