Android 性能优化 TraceView用法与分析

TraceView 简介:

TraceView 是Android平台提供的数据分析工具,通过它我们可以对内存泄漏等性能问题进行定位,需要明确的是,它只是分析工具,而不是数据采集工具,数据的采集是通过Debug类或者DDMS工具来采集的。

数据采集:

生成 trace 文件有两种方法:
1.使用代码
2.使用 DDMS

1.使用代码生成trace文件:

Debug.startMethodTracing("haierapp"); //开始trace,生成的文件保存到  /sdcard/haierapp.trace
........ //被trace的代码
Debug.stopMethodTracing(); //结束

这部分代码很简单,之后生成的trace文件被保存到 /sdcard/haierapp.trace目录下,我们用命令把它导出来:

adb pull /sdcard/haierapp.trace ./

使用代码生成trace文件有一个好处,就是你可以任意选择追踪开始的位置和结束的位置,比较灵活。

2.使用工具DDMS生成trace文件:

按照如下操作打开DDMS视图:
这里写图片描述

按照如下操作,选择你要trace的app,然后点击按钮开始trace:
这里写图片描述

然后操作app,系统会记录你操作过程中的一些数据,然后按照如下操作:
这里写图片描述

之后生成trace文件,下面是trace文件打开之后的视图:
这里写图片描述

上图介绍了 TraceView 的大致内容:

上半部分显示了 不同线程的执行时间
    其中不同的颜色表示不同的方法
    同一个颜色越长,说明执行时间越久,如图中的主线程 main
    空白表示这个时间段内没有执行内容
下半部分展示了不同方法的执行时间信息,关键指标有三个:
    Cpu Time/Call :该方法平均占用 CPU 的时间
    Real Time/Call :平均执行时间,包括切换、阻塞的时间,>= Cpu Time
    Calls + Recur Calls/Total :调用、递归次数

点击下面的任意一个方法,可以看到它的详细信息:

Parents:选中方法的调用处
Children:选中方法调用的方法

这里写图片描述

根据TraceView显示内容 定位问题:

1.先从上半部分看哪个线程执行时间较长?什么时候开始执行的?与主线程的交错时间?
2.在下方视图查看那些方法执行时间较长:
点击TraceView视图中的 Cpu time/call ,按照占用cpu时间由高到低排序。
3.点击TraceView视图中的 Calls + Recur Calls/Total 按照调用次数由高到低排序。

排序后先从排位靠前的开始分析,分析具体是哪里耗时并进行优化,为了方便,也可以在下面find输入框内输入包名进行过滤,以达到快速定位的效果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值