一、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
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,我們需要確定每一幀花費的總時間都低于這條橫線,這樣才能夠避免出現卡頓的問題。
本文作者:佚名
來源:51cto