如下为谷歌官方给出的使用方法:
地址:http://developer.android.com/intl/zh-cn/tools/performance/traceview/index.html
数据分析界面如下图所示:
上图中的下半部分为 Profile Panel(分析面板),Profile Panel 是 TraceView 的核心界面,其内涵非常丰富。它主要展示了某个线程(先在Timeline Panel 中选择线程)中各个函数调用的情况,包括 CPU 使用时间、调用次数等信息。而这些信息正是查找 hotspot 的关键依据。所以,对开发者而言,一定要了解 Profile Panel 中各列的含义。下表列出了 Profile Panel 中比较重要的列名及其描述。
如下图所示:
Traceview实战:
如何利用TraceView来查找hotspot。一般而言,hotspot包括两种类型的函数:一类是调用次数不多,但每次调用却需要花费很长时间的函数。一类是那些自身占用时间不长,但调用却非常频繁的函数。测试背景:APP 在测试机运行一段时间后出现手机发烫、卡顿、高 CPU 占有率的现象。将应用切入后台进行 CPU 数据的监测,结果显示,即使应用不进行任何操作,应用的 CPU 占有率都会持续的增长。按照TraceView简介中的方法进行测试,TraceView结果UI显示后进行数据分析,在Profile Panel中,选择按CpuTime/Call进行降序排序(从上之下排列,每项的耗费时间由高到低)得到如图所示结果:
图中 ImageLoaderTools$2.run()是应用程序中的函数,它耗时为 1111.124。然击 ImageLoaderTools$2.run() 项,得到更为详尽的调用关系图:
上图中 Parents 为 ImageLoaderTools$2.run()方法的调用者:Parents (the methods calling this method);Children 为 ImageLoaderTools$2.run() 调用的子函数或方法:Children(the methods called by this method)。本例中 ImageLoaderTools$2.run() 方法的调用者为 Framework 部分,而 ImageLoaderTools$2.run() 方法调用的自方法中我们却发现有三个方法的 Incl Cpu Time % 占用均达到了 14% 以上,更离谱的是 Calls+RecurCalls/Total 显示这三个方法均被调用了35000 次以上,从包名可以识别出这些方法为测试者自身所实现,由此可以判断 ImageLoaderTools$2.run() 极有可能是手机发烫、卡顿、高 CPU 占用率的原因所在。
-
网友评论