android抓trace工具,Android性能优化工具之TraceView
Android性能優(yōu)化工具之TraceView
引子
TraceView是Android平臺(tái)特有的數(shù)據(jù)采集和分析工具,該工具可以通過(guò)圖形化的方式讓我們了解需要跟照片那個(gè)程序的性能,可以具體到method,主要用于分析Android中應(yīng)用程序的Hotspot。該工具本身是一個(gè)數(shù)據(jù)分析工具,那個(gè)如何獲取數(shù)據(jù)并分析呢,筆者用之前寫(xiě)的一個(gè)demo.apk來(lái)進(jìn)行說(shuō)明分析。
采集數(shù)據(jù)
采集數(shù)據(jù)也就是生成我們需要分析的trace文件,生成該文件有三種方式
使用代碼
使用Android Studio
使用DDMS工具
代碼方式生成trace文件
使用代碼生成traces文件主要利用Android系統(tǒng)的Debug這個(gè)api,該類(lèi)在android.os包下,示例代碼如下
//開(kāi)始 trace,默認(rèn)保存文件到 "/sdcard/filename.trace"
Debug.startMethodTracing(String fileName);
/*需要分析的代碼..*/
Debug.stopMethodTracing();
簡(jiǎn)單說(shuō)明一下,當(dāng)調(diào)用開(kāi)始trace代碼的時(shí),系統(tǒng)會(huì)產(chǎn)生 trace 文件,并且產(chǎn)生追蹤的數(shù)據(jù),當(dāng)調(diào)用結(jié)束trace代碼時(shí),會(huì)將追蹤的數(shù)據(jù)寫(xiě)入到 trace文件中。既然文件保存在sdcard根目錄,我們可以copy出來(lái),也可以通過(guò)adb 將其pull 出來(lái)
使用Android studio 生成trace文件
使用Android studio 自帶的 Android monitor 可以生成trace,如下圖所示,當(dāng)啟動(dòng)debug的應(yīng)用時(shí),Start Method Tracing 按鈕會(huì)顯示成可點(diǎn)擊的狀態(tài),
點(diǎn)擊之后,會(huì)開(kāi)始追蹤trace,想要結(jié)束trace,再次點(diǎn)擊即 可,Android studio 會(huì)幫你自動(dòng)打開(kāi),如下圖所示
從上面可以看到,某一些方法的執(zhí)行時(shí)間,調(diào)用次數(shù)以及其調(diào)用關(guān)系,也可以搜索其過(guò)濾特定的內(nèi)容
從左上角可以切換不同的線程,當(dāng)鼠標(biāo)懸浮狀態(tài)置于某個(gè)方法塊上,可以顯示該方法的開(kāi)始時(shí)間結(jié)束時(shí)間,以及一些時(shí)間比例,如下圖所示
使用DDMS 生成trace
DDMS是 Android 調(diào)試監(jiān)控工具,它為我們提供了截圖,查看 log,查看視圖層級(jí),查看內(nèi)存使用等功能,Android Studio 或者eclipse中都集成了該功能,如果你配置了Android環(huán)境變量,也可以直接在命令行敲DDMS,該工具在\android_sdk\tools下面。 在Devices列表中,選中你的設(shè)備和進(jìn)程,進(jìn)行trace,再次點(diǎn)擊停止trace,停止trace后,DDMS會(huì)自動(dòng)加載trace文件,下面介紹一下面板主要功能,如下圖所示。
圖中主要標(biāo)記了某些重要的項(xiàng),用DDMS可以清楚地看到各個(gè)線程的執(zhí)行時(shí)間,
最后看一下數(shù)據(jù)分析面板,在數(shù)據(jù)分析面板,你可以點(diǎn)擊某個(gè)函數(shù)展開(kāi)更詳細(xì)的信息,展開(kāi)后,大多數(shù)有以下兩個(gè)類(lèi)別:
Parents:調(diào)用該方法的父類(lèi)方法
Children:該方法調(diào)用的子類(lèi)方法
如果該方法含有遞歸調(diào)用,可能還會(huì)多出兩個(gè)類(lèi)別:
Parents while recursive:遞歸調(diào)用時(shí)所涉及的父類(lèi)方法
Children while recursive:遞歸調(diào)用時(shí)所涉及的子類(lèi)方法
至于數(shù)據(jù)分析面板紅色框中,主要字段含義已經(jīng)標(biāo)記,點(diǎn)擊某個(gè)條目可以進(jìn)行排序
**主要:**很重要的指標(biāo):Calls + RecurCalls/Total , 最重要的指標(biāo): Cpu Time/Call
因?yàn)槲覀冏铌P(guān)心的有兩點(diǎn),一是調(diào)用次數(shù)不多,但每次調(diào)用卻需要花費(fèi)很長(zhǎng)時(shí)間的函數(shù)。這個(gè)可以從Cpu Time/Call反映出來(lái)。另外一個(gè)是那些自身占用時(shí)間不長(zhǎng),但調(diào)用卻非常頻繁的函數(shù)。這個(gè)可以從Calls + RecurCalls/Total反映出來(lái)。
結(jié)語(yǔ)
最后說(shuō)明一點(diǎn),實(shí)際情況下,分析的難度比較大,但是當(dāng)體驗(yàn)卡頓的時(shí)候,我們可以借助TraceView來(lái)定位問(wèn)題。下一篇總結(jié)下Systrace 工具使用。
總結(jié)
以上是生活随笔為你收集整理的android抓trace工具,Android性能优化工具之TraceView的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 什么是句柄,句柄有什么作用
- 下一篇: android traceview工具,