本文章轉載于搜狗測試
問題背景:PP 在測試機運行一段時間后出現手機發燙、卡頓、高 CPU 占有率的現象。如何去檢查當前性能變化的原因是什么,可以使用android系統分析工具-traceview
traceView是Android 平臺配備一個很好的性能分析的工具。它可以通過圖形化的方式讓我們了解我們要跟蹤的程序的性能。TraceView是 Android 平臺特有的數據采集和分析工具,它主要用于分析 Android 中應用程序的 hotspot。TraceView 本身只是一個數據分析工具,而數據的采集則需要使用 AndroidSDK中的 Debug 類或者利用 DDMS 工具。
一般有兩種方式:
A、調用Debug類
在開始調試的地方,如Activity的OnCreate函數,添加
Debug.startMethodTracing("tracefilename");
在結束調試的地方,如Activity的OnCreate函數,添加;
Debug.stopMethodTracing();
之后運行你的app一段時間并退出會在sd卡根目錄生成tracefilename.trace這個log文件,記錄這段時間內的運行信息。將日志文件pull到PC端,cmd到android sdktools文件夾內(或綁定sdk tools目錄到系統path內),運行traceviewtracefilename.trace即可打開TraceView分析界面
B、調用DMMS
DDMS中TraceView使用示意圖如下,調試人員可以通過選擇Devices中的應用后點擊
按鈕Start Method Profiling(開啟方法分析)和點擊Stop?MethodProfiling(停止方法分析)
開啟方法分析后對應用的目標頁面進行測試操作,測試完畢后停止方法分析,界面會跳轉到DDMS 的 trace 分析界面,如下圖所示:
TraceView界面比較復雜,其UI劃分為上下兩個面板,即Timeline Panel(時間線面板)和Profile Panel(分析面板)。上圖中的上半部分為Timeline Panel(時間線面板),Timeline Panel又可細分為左右兩個Pane:
?左邊Pane顯示的是測試數據中所采集的線程信息。由圖可知,本次測試數據采集了main線程,傳感器線程和其它系統輔助線程的信息。
?右邊Pane所示為時間線,時間線上是每個線程測試時間段內所涉及的函數調用信息。這些信息包括函數名、函數執行時間等。由圖可知,Thread-1412線程對應行的的內容非常豐富,而其他線程在這段時間內干得工作則要少得多。
?另外,開發者可以在時間線Pane中移動時間線縱軸??v軸上邊將顯示當前時間點中某線程正在執行的函數信息。
上圖中的下半部分為Profile Panel(分析面板),Profile Panel是TraceView的核心界面,其內涵非常豐富。它主要展示了某個線程(先在Timeline Panel中選擇線程)中各個函數調用的情況,包括CPU使用時間、調用次數等信息。而這些信息正是查找hotspot的關鍵依據。所以,對開發者而言,一定要了解Profile Panel中各列的含義。下表列出了Profile Panel中比較重要的列名及其描述。