Android Studio 中Android Monitor 很強(qiáng)大逝淹,有5個(gè)模塊耕姊,Memory、Network栅葡、logcat茉兰、CPU、GPU欣簇。
-
內(nèi)存檢測(cè) memory
這個(gè)可以檢測(cè)內(nèi)存泄漏规脸,如果這個(gè)值穩(wěn)定,沒(méi)有很大的變動(dòng)熊咽,說(shuō)明沒(méi)什么問(wèn)題莫鸭。
對(duì)于圖中從左到右的四個(gè)五個(gè)按鈕:第一個(gè)(Enabled)Memory的開關(guān)。如果選擇關(guān)閉横殴,則不對(duì)當(dāng)前進(jìn)程進(jìn)行內(nèi)存監(jiān)測(cè)被因;第二個(gè)(Initiate GC)手動(dòng)調(diào)用GC,我們?cè)谧?nèi)存前衫仑,一定要手動(dòng)點(diǎn)擊 Initiate GC按鈕手動(dòng)觸發(fā)GC梨与,這樣抓到的內(nèi)存使用情況就是不包括Unreachable對(duì)象的;第三個(gè)(Dump Heap java)點(diǎn)擊這個(gè)按鈕的時(shí)刻文狱,就在點(diǎn)擊的時(shí)刻粥鞋,將獲取hprof文件(hprof文件也是我們使用MAT工具分析內(nèi)存時(shí)經(jīng)常使用的文件)若進(jìn)行簡(jiǎn)單的數(shù)據(jù)分析用這個(gè)就可以,需要詳細(xì)分析那么就得使用MAT工具瞄崇,如圖:
A 區(qū)域可以看類視圖呻粹,class list view到踏;或者包視圖,package tree view尚猿。
B 區(qū)域?qū)?yīng)的是A中選中類的實(shí)例對(duì)象窝稿。
C 區(qū)域是對(duì)應(yīng)B中選中實(shí)例的引用鏈,dominating size可以看到占用的大小第四個(gè)按鈕(Start Allocaton Tracking)開始分配追蹤凿掂,第一次點(diǎn)擊可以指定追蹤內(nèi)存的開始位置伴榔,第二次點(diǎn)擊可以結(jié)束追蹤的位置。這樣我們截取了一段要分析的內(nèi)存庄萎,等待幾秒鐘AndroidStudio會(huì)給我們打開一個(gè)Allocation視圖.
打開后我們可以看到各個(gè)線程中的方法所占用內(nèi)存的大小
thread
第五個(gè)按鈕就是跳轉(zhuǎn)到官網(wǎng)說(shuō)明的網(wǎng)頁(yè):https://developer.android.com/studio/profile/am-memory.html?utm_source=android-studio
-
NetWork:
Tx:上傳網(wǎng)速
Rx:下載網(wǎng)速糠涛。
-
CPU
這個(gè)模塊可以監(jiān)控方法執(zhí)行的時(shí)間軸,可以監(jiān)測(cè)到每個(gè)方法的耗時(shí)忍捡,比較實(shí)用。
我們可以看到每個(gè)方法的執(zhí)行時(shí)間砸脊,也可以看到自己寫的方法,
Inclusive time - 函數(shù)本身運(yùn)行花費(fèi)時(shí)間 + 函數(shù)調(diào)用其他函數(shù)時(shí)間
Exclusive time - 函數(shù)本身運(yùn)行花費(fèi)時(shí)間凌埂。
Invocation count - 是調(diào)用次數(shù)。
如果app卡頓現(xiàn)象,那么用此模塊可以快速定位出比較耗時(shí)的方法瞳抓。
Wall Clock Time 和Thread Time的區(qū)別是埃疫,Wall Clock Time 包括了Thread Sleep的時(shí)間孩哑,而Thread Time不包括。
-
GPU
分析GPU的性能臭笆,實(shí)時(shí)查看繪制每一幀所花費(fèi)的時(shí)間:https://developer.android.com/studio/profile/am-gpu.html
-
Logcat:打log絕對(duì)是調(diào)試中非常好用的工具了