DDMS
DDMS (Dalvik Debug Monitor Service)是安卓开发环境中的Dalvik虚拟机调试监控服务。可以进行的操作有:为测试设备截屏,查看特定行程中正在运行的线程以及堆信息、Logcat、广播状态信息、模拟电话呼叫、接收SMS、虚拟地理坐标等,功能非常强大,对于安卓开发者来说是一个非常好的工具。
下面的图片显示DDMS中具体的作用:
DDMS.png
自己可以在AndroidStudio中打开Android Device Monitor进行尝试:
AndroidDeviceMonitor.png
TraceView
TraceView简介
TraceView是AndroidSDK里面自带的工具,用于对Android的应用程序以及Framework层的代码进行性能分析。
TraceView是图形化的工具,最终它会产生一个图表,用于对性能分析进行说明。
TraceView可以跟踪到具体的Method
生成TraceView日志的两种方法
- TraceView通过修改code,在需要调试的起始位置加入调试函数,程序运行之后会在SD的根目录下产生.trace文件来保存运行时的数据,然后把.trace文件考到pc机上,通过traceview命令对*.trace文件进行分析。
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//如果6.0及以上的系统,因为WRITE_EXTERNAL_STORAGE权限,需要加入运行时权限代码
Debug.startMethodTracing("filename");
}
protected void onDestroy() {
super.onDestroy();
Debug.stopMethodTracing();
}
- 利用AndroidDeviceMonitor工具辅助(Start Method Profiling)生成traceview日志。此方法适用于没有目标应用源代码的情况。
分析TraceView表格
如果是代码生成的,就导出sdcard/filename.trace,让后通过AndroidDeviceMonitor中File->Open File打开。
//导出到桌面上
adb pull /sdcard/filename.trace C:\Users\Administrator\Desktop
生成如下表格:
Traceview界面UI划分为上下两个面板,即Timeline Panel(时间线面板)和Profile Panel(分析面板)。 TraceView.pngTimeLine Panel(时间线面板) 时间线面板.png
Profile Panel(分析面板) 分析面板.png
列名 | 描述 |
---|---|
Name | 该线程运行过程中所调用的函数名 |
Incl Cpu Time | 某函数占用的CPU时间,包含内部调用其它函数的CPU时间 |
Excl Cpu Time | 某函数占用的CPU时间,但不含内部调用其它函数所占用的CPU时间 |
Incl Real Time | 某函数运行的真实时间(以毫秒为单位),内含调用其它函数所占用的真实时间 |
Excl Real Time | 某函数运行的真实时间(以毫秒为单位),不含调用其它函数所占用的真实时间 |
Call+Recur Calls/Total | 某函数被调用次数以及递归调用占总调用次数的百分比 |
Cpu Time/Call | 某函数调用CPU时间与调用次数的比。相当于该函数平均执行时间 |
Real Time/Call | 同CPU Time/Call类似,只不过统计单位换成了真实时间 |
了解完Traceview的UI后,现在介绍如何利用Traceview来查找hotspot(热点或者说是瓶颈,可以优化的地方)。
一般而言,hotspot包括两种类型的函数:
- 一类是调用次数不多,但每次调用却需要花费很长时间的函数。
- 一类是那些自身占用时间不长,但调用却非常频繁的函数。
网友评论