做的一款軟件裏,每次從一個activity到另一個activity時,看CPU的圖和運行速度都有點可怕,線程太多了麼,但是具體的是什麼,我也不確定。
使用Android Studio -> Tools -> Android(最底下一個) -> Android Device Monitor ->打開頁面後等待左欄中出現你要監視的機子信息
然後點選運行的程序信息-> 點選左上菜單欄裏的圖標(圖標對應的事情在右邊菜單欄裏有對應的名字)。如我要檢查我的線程:
發現我的Render Thread數字有點可怕
Heap:66.11%(初始) -> 打開菜單66.13%-> 跳轉第二個Activity 80.67% -》點擊某dialog 81.03% -》打開 Spinner 80.72% 然後就不下去了
查heap時, Thread 1 & 6佔最多, Thread 1 大多是UI上的內容
1868 84924
byte[] 6
org.apache.harmony.dalvik.ddmc.DdmVmInternal
getRecentAllocations
後來去查發現render和我的UI有關,難道是我的resource的內容太多? 把大尺寸的圖改小後,以及省去一些自己做的UI,這個速度又變正常了。
然後去看heap,Thread 6 還是很明顯的在漲。然後繼續查 Thread 6是什麼,以及 org.apache.harmony.dalvik.ddmc.DdmVmInternalgetRecentAllocations 是什麼鬼
“注意:總會有一些分配是來自與 DdmVmInternal 和 allocation tracker本身。儘管移除掉所有嚴重影響性能的代碼是不必要的(也是不可能的),但是allocation tracker還是可以幫助定位代碼中的嚴重問題。例如,應用可能在每個draw操作上創建新的Paint對象。把對象改成全局變量就是一個很簡單的改善性能的修改。”(Ref:http://blog.csdn.net/jdsjlzx/article/details/45822217)
線程Thread Wiki::(http://baike.baidu.com/link?url=59bU6kZtzdqgVT44sjWpH8DSiKqEvYWBwB0FRSJcFz1NhuCoA2vTp1zuY5ZjS9T6LfndkOcQSydkEuvqqo5bt)
優化簡介:http://www.oschina.net/news/60157/android-performance-patterns