Android性能優(yōu)化及性能優(yōu)化工具
性能優(yōu)化的幫助工具:
MAT
,Memory Monitor
(屬于AndroidMonitor中一個模塊),HeapTool
(查看堆信息),Allaction Tracking
,LeakCanary
Lint
工具
1.Allaction Tracking
(1)追蹤
在內(nèi)存圖中點擊途中箭頭的部分,啟動追蹤,再次點擊就是停止追蹤,隨后自動生成一個alloc結(jié)尾的文件,這個文件就記錄了這次追蹤到的所有數(shù)據(jù),然后會在右上角打開一個窗口。展示和第一種方式有點區(qū)別,各有所長,他有兩種展現(xiàn)方式。
(2)分類我們的內(nèi)存分配
紅框中:
Group by Method:用方法來分類我們的內(nèi)存分配,默認(rèn)會以Group by Method來組織
Group by Allocator:用內(nèi)存分配器來分類我們的內(nèi)存分配
我們用 Group by Allocator的方式來查看一下:
可以看到我們自己包中,每一個類的內(nèi)存分配次數(shù)和分配的大小。如果我們想看內(nèi)存分配的實際在源碼中發(fā)生的地方,可以選擇需要跳轉(zhuǎn)的對象,點擊該按鈕就能發(fā)現(xiàn)我們的源碼。
(3)查看統(tǒng)計圖
想看某個圖層詳細(xì)內(nèi)存分配,則雙擊速表左鍵進入下一圖層:
內(nèi)存分配情況
通過[Layout方式查看更直觀:
2.LeakCanary
(1)配置
Getting started In your build.gradle: dependencies { debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5.2' releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.2' } In your Application class: public class ExampleApplication extends Application { @Override public void onCreate() { super.onCreate(); if (LeakCanary.isInAnalyzerProcess(this)) { // This process is dedicated to LeakCanary for heap analysis. // You should not init your app in this process. return; } LeakCanary.install(this); // Normal app init code... } }
(2)制造一個單例內(nèi)存泄漏的點
public class CommonUtils { private static CommonUtils instance; private Context context; private CommonUtils(Context context) { this.context = context; } public static CommonUtils getInstance(Context context) { if (instance == null) { instance = new CommonUtils(context); } return instance; } } protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); CommonUtils commonUtils = CommonUtils.getInstance(this); }
(3)LeakCanary 發(fā)出內(nèi)存泄漏通知
(4)LeakCanary 分析
LeakCanary
本質(zhì)上還是用命令控制生成hprof
文件分析檢查內(nèi)存泄漏。
3.Lint分析工具
Android Studio
很方便,很好用,你可以試試點擊AS菜單欄上面的Analyze
選項,然后點擊Inspection
Scope
,然后選擇你需要檢測的范圍(比如整個項目),然后AS會自動彈出下圖所示的面板
可能出現(xiàn)內(nèi)存泄漏的類:
檢測資源文件是否有沒有用到的資源。
檢測常見內(nèi)存泄露
安全問題SDK版本安全問題
是否有費的代碼沒有用到
代碼的規(guī)范---甚至駝峰命名法也會檢測
自動生成的羅列出來
沒用的導(dǎo)包
可能的bug
到此這篇關(guān)于Android性能優(yōu)化及性能優(yōu)化工具的文章就介紹到這了,更多相關(guān)Android性能優(yōu)化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Kotlin協(xié)程之Flow基礎(chǔ)原理示例解析
這篇文章主要為大家介紹了Kotlin協(xié)程之Flow基礎(chǔ)原理示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-09-09Android開發(fā)中LayoutInflater用法詳解
這篇文章主要介紹了Android開發(fā)中LayoutInflater用法,結(jié)合實例形式分析了LayoutInflater類的功能、作用、使用方法及相關(guān)注意事項,需要的朋友可以參考下2016-08-08自定義視圖view使用Canvas實現(xiàn)手寫板和涂鴉功能
這篇文章主要介紹了自定義視圖view使用Canvas實現(xiàn)手寫板和涂鴉功能,這里直接上代碼,里面有詳細(xì)講解和注釋,需要的朋友可以參考下2023-04-04Android 線程之自定義帶消息循環(huán)Looper的實例
這篇文章主要介紹了Android 線程之自定義帶消息循環(huán)Looper的實例的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下2017-10-10Android提高之BLE開發(fā)Android手機搜索iBeacon基站
這篇文章主要介紹了BLE開發(fā)Android手機搜索iBeacon基站,需要的朋友可以參考下2014-08-08