2010-12-11 98 views
0

我有一個現在變得相當大和複雜的Android應用程序,它似乎有間歇性的性能問題。有一次,我將運行該應用程序,這很好,另一次它會切換視圖時很難。檢測性能問題的原因?

如何使用調試工具檢測性能問題的原因,以便我可以更正它?

回答

7

使用SDK附帶的ddms工具。它有一個很好的功能叫分配跟蹤器,它允許你實時看到你的代碼正在消耗多少內存,以及特定的線路是什麼造成的。

大多數情況下,由於糟糕的適配器實施,糟糕的佈局膨脹技術或不使用緩存系統來解碼Bitmaps(如使用SoftReference),您的應用程序會減速。

看看這篇文章的簡要說明:Tracking Memory Allocations

a

+2

完成克里斯蒂安的答案。 Java/Android中的分配=由於垃圾回收器踢入而引起的打嗝。因此,除非真的需要,否則請避免創建新對象。 – 2010-12-11 22:33:55

+2

還有一個新的'StrictMode'應該是有用的,它會確保你在主線程上沒有做太多密集的事情。 http://developer.android.com/reference/android/os/StrictMode.html – smith324 2010-12-11 23:33:45

0

除了克里斯蒂安提到的工具,Traceview是另一個有用的一個。它沒有很好的記錄,但它可以告訴你方法被調用的頻率以及哪些方法需要花費很多時間。

另一個美好的記憶跟蹤工具是MAT,這裏是介紹如何與Android使用它的頁面:http://ttlnews.blogspot.com/2010/01/attacking-memory-problems-on-android.html

無論是跟蹤和堆轉儲可以通過DDMS面板完成,如果你不喜歡與命令行一起工作。在Eclipse中,在設備面板中,在您正在使用的設備/模擬器下,單擊您的應用程序(按軟件包名稱列出),然後可以啓動/停止方法分析以獲取跟蹤,並且可以使用轉儲HPROF獲取堆轉儲。請注意,需要將轉儲轉換爲MAT插件。上面的攻擊記憶問題在android上描述瞭如何做到這一點。

相關問題