Android自带的TraceView堪比java的性能调优工具visualvm线程视图,可以方便的查看线程的执行情况,某个方法执行时间、调用次数、在总体中的占比等,从而定位性能点。

1、生成日志,运行TraceView

运行TraceView有两种方式

a、调用Debug类

在开始调试的地方,如Activity的OnCreate函数,添加

Debug.startMethodTracing("tracefilename");

结束调试的地方,如Activity的OnCreate函数,添加

Debug.stopMethodTracing();

之后运行你的app一段时间并退出会在sd卡根目录生成tracefilename.trace这个log文件,记录这段时间内的运行信息。
将日志文件pull到PC端,cmd到android sdk tools文件夹内(或绑定sdk tools目录到系统path内),运行traceview tracefilename.trace即可打开TraceView分析界面,如下

这种方式可以随意开始和结束调试的位置,所以适合具体代码的性能排查。find貌似只支持小写,所以如果查找JsonObject需要输入jsonobject

b、使用DDMs

打开devices窗口,选择某个进程,点击右上角的start method profiling

运行app一段时间后,再点击已变成stop method profiling的该按钮。eclipse会自动弹出debug的标签(可通过菜单File->save as保存数据)。界面同上面。

这种方式不需要修改代码,所以对于没有源码的程序同样可以进行排查。同时可以方便的进行全局性能排查

2、TraceView界面信息介绍

TraceView界面包括时间面板和方法面板

(1) 时间面板(Timeline Panel)

时间面板展示了每个线程的执行情况,其中的[1]main即为ui主线程。

移动到某个位置可以查看该点对应的方法的执行信息,点击方法面板则会选中相应的方法。

可以左键按住不放选中区域放大局部精细查看,不同方法用不同颜色标注

(2) 方法面板(Profile Panel)

方法面板展示了所有方法的执行情况,点击某个方法可以查看在对应线程上的执行时间区域,并会显示其父方法及子方法。

每个方法包括如下信息列,可点击某列进行排序,从而确定产生性能问题的函数:

Incl Cpu Time, Excl Cpu Time, Incl Real Time, Excl Real Time, Incl Cpu Time%, Excl Cpu Time%, Incl Real Time%, Excl Real Time%, Calls+RecurCalls/Total, Cpu Time/Call, Real Time/Call

所有的Time都是以毫秒计算。每列具体含义及作用如下:

a. Incl表示将所有子函数耗时也计算在内,Excl则表示不包括子函数的调用时间。对比可以确定耗时操作发生是自身还是子函数中。

b. Cpu Time表示占用cpu执行的时间,Real Time包括Cpu Time以及等待、切换的时间等,所以一般都大于Cpu Time。对比可以判断耗时操作是否在cpu执行段内。

c. 上面四个指标对应的%表示函数在总时间的占比。方便查看某个函数的时间占比。

d. Calls+RecurCalls/Total表示被外部调用次数+递归次数/总次数。可以查看调用次数是否符合自己预期。

e. Cpu Time/Call, Real Time/Call表示总的Cpu Time及Real Time与总调用次数的比例。查看每次调用的耗时,一般可通过简单此项确定每个函数的性能。

3、其他调优工具

(1) dmtracedump

sdk tools下的另外一个工具dmtracedump可用于生成上述log文件内的函数调用关系图,不过在windows上稍微大点的文件即或报错

(2) visualvm

看到ddms提供了dump hprof file的功能,本来准备生成hprof文件用visualvm打开试试,结果一直打不开..

在银狐的帮忙下,发现android sdk tools dump的hprof需要经过sdk tools下的hprof-conv转换为标准的hprof文件,才能通过visualvm或eclipse的MemoryAnalyzer打开进行分析,之后就同java一样了。hprof-conv格式为

hprof-conv <infile> <outfile>

Android性能调优工具TraceView相关推荐

  1. android性能调优的工具,神兵利器-Android 性能调优工具 Hugo

    在进行Android性能调优.减少应用卡顿时,寻找可优化的code是一个必要的过程.如何发现应用中的耗时任务甚至是耗时函数呢,如果可以在log中打印每个方法的执行时间,甚至把执行方法时的输入输出同时打 ...

  2. Android系统性能调优工具介绍

    经作者授权,发表Tieto某青年牛的一篇<程序员>大作. Android系统性能调优工具介绍 在软件开发过程中,想必很多读者都遇到过系统性能问题.而解决系统性能问题的几个主要步骤是: 测评 ...

  3. HTML5应用性能调优工具WAPA – 安装篇

    转载: http://software.intel.com/node/506559 HTML5应用性能调优工具WAPA – 安装篇 Submitted by Dawei Cheng 程大伟... on ...

  4. Android性能调优篇之探索垃圾回收机制

    开篇废话 如果我们想要进行内存优化的工作,还是需要了解一下,但这一块的知识属于纯理论的,有可能看起来会有点枯燥,我尽量把这一篇的内容按照一定的逻辑来走一遍.首先,我们为什么要学习垃圾回收的机制,我大概 ...

  5. Java应用性能调优工具介绍及实践

    一.背景 (1).随着微服务架构的逐渐推广,一个大型的单个应用程序被拆分为数个微服务系统,这为研发人员的本地调试跟踪带来困难 (2).在微服务架构中,由于业务的复杂性,常常一个业务流程涉及好数个微服务 ...

  6. jvm性能调优工具之 jmap使用详解

    本文来说下jvm性能调优工具之 jmap使用详解 文章目录 概述 jmap用法 示例一:no option 示例二:heap 示例三:histo[:live] 示例四:clstats 示例五:fina ...

  7. mysql配置优化ya_mysql性能调优工具之mytop

    Mysql性能调优工具之mytop的安装和使用 1.mytop的下载地址 2.首先安装mytop必要的组件. yum -y install perl-DBD-MySQL perl-DBIperl-Te ...

  8. JVM性能调优监控工具专题一:JVM自带性能调优工具(jps,jstack,jmap,jhat,jstat,hprof)...

    2019独角兽企业重金招聘Python工程师标准>>> 前提概要:         JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外 ...

  9. JVM性能调优(4)——性能调优工具

    目录 一.JDK工具1.JDK工具2.利用 jps 找出进程3.利用 jstat 查看VM统计信息4.利用 jmap 查看对象分布情况5.利用 jstack 分析线程栈 二.Linux 命令行工具1. ...

  10. java 性能 火焰图_性能调优工具-火焰图

    性能调优工具-火焰图 发布时间:2019-07-17 19:29, 浏览次数:402 前言 工具的进化一直是人类生产力进步的标志,合理使用工具能大大提高我们的工作效率,遇到问题时,合理使用工具更能加快 ...

最新文章

  1. java课程第七天,匿名内部类以及异常处理
  2. 模组使用之dB、dBm、dBw、dBu、dBc的含义和之间的关系
  3. 怎么让项目断开svn连接服务器,SVN断开与服务器连接
  4. Android Studio 单刷《第一行代码》系列 07 —— Broadcast 广播
  5. 实现strSrt()
  6. 百度Java面试题及答案(2022最新版)
  7. Windows常用快捷键【快查字典版】
  8. k3 审核流程图_K3Cloud 业务流程图Sql
  9. 老男孩python作业_老男孩python学习之作业一购物小程序
  10. 计算机控制系统烤箱温度控制,图说恒温烘箱温度控制系统的设计分析
  11. 阿里云首席安全科学家吴翰清的思考:弹性安全网络,构建下一代安全的互联网...
  12. H264 码率控制原理
  13. 通过经纬度求解方位角
  14. 恢复扩容U盘实际容量 检查正版U盘 U盘量产工具 U盘修复工具使用方法
  15. DLL load failed: %1 不是有效的 Win32 应用程序的解决办法
  16. Java源码阅读--任重而道远(lang)
  17. Python深度学习05——Keras循环神经网络实现股价预测
  18. 【微信技术-微信小程序】------- 渐进式骨架屏(加载流)(第二篇)
  19. 今日没有睡眠质量记录
  20. ALM系统开发工程师职业发展调查

热门文章

  1. linux桌面环境组件下载,万能桌面小组件
  2. 软件开发架构与网络编程
  3. matlab griddata外插,matlab griddata方法使用介绍
  4. MATLAB向量运算
  5. Python下各种GUI(图形用户界面)简介、使用优缺点对比
  6. 期末复习-选择题整理(湖南大学操作系统课程雨课堂答案即期末题库)
  7. c语言队列的作用,C语言队列
  8. Spark项目实践--基于 TMDB 数据集的电影数据分析
  9. windows 一些恶搞的bat小脚本
  10. 使你的程序支持多GPU渲染