天天看點

Android性能分析工具的使用

一、android studio-memory monitor

使用方法

run起你的項目,找到memory monitor視窗,選擇memory  

Android性能分析工具的使用

[轉]記憶體變化波形圖

另外,還可選擇檢視cpu和gpu還有network的使用情況。 

Android性能分析工具的使用

網絡使用波形圖.png

其中network的頻繁使用是造成應用耗電的關鍵,70%左右的電量是被上報資料,檢查位置資訊,定時檢索背景廣告資訊所使用掉的。如何平衡這兩者的電量消耗,就顯得非常重要了。

二、android studio 1.5 preview 新玩具-heap snapshot

同樣run起項目,進行一些操作之後點選左下角‘dump java heap’的按鈕

Android性能分析工具的使用

每次點選之後會生成一個.hprof的檔案

Android性能分析工具的使用

點選一個.hprof檔案,檢視右側的analyzer test,能看到兩個選項

一個是‘detect leaeked activites’,另一個是'find duplicate strings',點選右上角的綠色播放按鈕,會自動分析heap dump去定位洩露的activity和重複的string,出現如下的analysis results。

Android性能分析工具的使用

該面闆裡的資訊可以有三種類型: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”。 

Android性能分析工具的使用

allocation tracker

特點

a.需要進行間斷的操作

b.可定位到具體某一行代碼

四、hierarchyviewer

使用hierarchyviewer檢視需要檢查的頁面的層次,檢查頁面最深層數, 官方建議最好控制在10層以内

Android性能分析工具的使用

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

Android性能分析工具的使用

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處理的時間。

Android性能分析工具的使用

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

本文作者:佚名

來源:51cto

繼續閱讀