Android性能分析工具的使用
一、Android Studio-Memory Monitor
使用方法
run起你的項目,找到Memory Monitor窗口,選擇Memory
[轉]內存變化波形圖
另外,還可選擇查看CPU和GPU還有NetWork的使用情況。
網絡使用波形圖.png
其中NetWork的頻繁使用是造成應用耗電的關鍵,70%左右的電量是被上報數據,檢查位置信息,定時檢索后臺廣告信息所使用掉的。如何平衡這兩者的電量消耗,就顯得非常重要了。
二、Android Studio 1.5 Preview 新玩具-Heap Snapshot
使用方法
同樣run起項目,進行一些操作之后點擊左下角‘Dump Java Heap’的按鈕
每次點擊之后會生成一個.hprof的文件
點擊一個.hprof文件,查看右側的analyzer test,能看到兩個選項
一個是‘Detect Leaeked Activites’,另一個是'Find Duplicate Strings',點擊右上角的綠色播放按鈕,會自動分析heap dump去定位泄露的activity和重復的string,出現如下的Analysis Results。
該面板里的信息可以有三種類型:app heap/image heap/zygote heap.
分別代表app 堆內存信息,圖片堆內存信息,zygote進程的堆內存信息。
各屬性中英文對照表
名稱 | Total Count | Heap Count | Sizeof | Shallow size | Retained Size |
---|---|---|---|---|---|
意義 | 內存中該類的對象個數 | 堆內存中該類的對象個數 | 物理大小 | 對象本身占有內存大小 | 釋放該對象后,節省的內存大小 |
名稱 | depth | Shallow Size | Dominating Size |
---|---|---|---|
意義 | 深度 | 對象本身內存大小 | 管轄的內存大小 |
三、Eclipse-Allocation Tracker(分配跟蹤器)
使用方法
點擊“Start Tracking”,在應用中執行某個操作,然后點擊“Get Allocations”。
Allocation Tracker
特點
a.需要進行間斷的操作
b.可定位到具體某一行代碼
四、hierarchyviewer
使用hierarchyviewer查看需要檢查的頁面的層次,檢查頁面最深層數, 官方建議最好控制在10層以內
hierarchyviewer
布局層級優化方案:
1). 自定義控件使用merge標簽來減少不必要的根節點;
2).使用drawbleleft,代替多添加一個imageview;
3).有時使用relativelayout會比linearlayout需要更少層次就能達到實現效果;
4).使用viewstub來隱藏控件,ViewStub中的布局只有在你需要的時候才會渲染到主界面中;
...
五、leakcanary(Android 和 Java 內存泄露檢測框架)
AndroidStudio
https://github.com/square/leakcanary
Eclipse
https://github.com/SOFTPOWER1991/LeakcanarySample-Eclipse
六、手機設置->開發者選項
1. Show GPU Overdraw
Show GPU Overdraw
藍色,淡綠,淡紅,深紅代表了4種不同程度的Overdraw情況,我們的目標就是盡量減少紅色Overdraw,看到更多的藍色區域。
優化方案:
Overdraw有時候是因為你的UI布局存在大量重疊的部分,還有的時候是因為非必須的重疊背景。例如某個Activity有一個背景,然后里面 的Layout又有自己的背景,同時子View又分別有自己的背景。僅僅是通過移除非必須的背景圖片,這就能夠減少大量的紅色Overdraw區域,增加 藍色區域的占比。這一措施能夠顯著提升程序性能。
Profile GPU Rendering - 選中On screen as bars的選項
每一條柱狀線都包含三部分,藍色代表測量繪制Display List的時間,紅色代表OpenGL渲染Display List所需要的時間,黃色代表CPU等待GPU處理的時間。

中間有一根綠色的橫線,代表16ms,我們需要確保每一幀花費的總時間都低于這條橫線,這樣才能夠避免出現卡頓的問題。