Traceview本身是一个数据分析工具, Android 平台将Traceview作为 Android SDK内置的一个工具,主要用于加载 Android 应用程序所生成的trace文件并且分析trace文件采集到的数据里面每个方法(函数)在不同线程里调用次数、消耗的时间等等。

Trace文件里数据的采集则需要使用 Android SDK 中的 Debug 类或者利用 DDMS 工具

Traceview在Android SDK的tools目录里,如下图:

配置环境

步骤一:在系统变量里新建ANDROID_HOME

步骤二:在系统变量的Path里添加 %ANDROID_HOME%\tools

使用代码生成 trace 文件

在需要分析代码的开始位置添加以下代码

//文件默认保存到 sdcard 根目录下,"/sdcard/testTraceView.trace"

Debug.startMethodTracing("testTraceView");

复制代码

其中testTraceView参数是自定义,其实就是生成的TraceView文件的文件名,例如testTraceView.trace

在需要分析的结束位置添加以下代码

Debug.stopMethodTracing();

复制代码

需要添加的权限

复制代码

报错示例

没有获取到权限

E/art: Unable to open trace file '/sdcard/testTrace.trace': Permission denied

复制代码

2.打开testTrace.trace文件时报错 ,因为没有执行Debug.stopMethodTracing();

Failed to read the trace filejava.io.IOException: Key section does not have an *end marker

at com.android.traceview.DmTraceReader.parseKeys(DmTraceReader.java:420)

at com.android.traceview.DmTraceReader.generateTrees(DmTraceReader.java:91)

at com.android.traceview.DmTraceReader.(DmTraceReader.java:87)

at com.android.traceview.MainWindow.main(MainWindow.java:286)

复制代码

打开testTrace.trace文件时报错的重要提示:Key section does not have an *end marker at com.android.traceview,说明没有添加或者执行Debug.stopMethodTracing();

查看是否生成trace文件

进入到shell模式执行下面的指令语句在doc命令窗口或者AndroidStudio里Terminal窗口里执行adb shell,下图本人写的demo在AndroidStudio里Terminal窗口查看的截图:

注意:如果Debug.startMethodTracing("testTraceView");startMethodTracing里的参数只填写testTraceView,则上面的截图步骤只需要执行1、2两步就可看到testTraceView.trace文件 需要知道本人为什么执行3、4两步,请看本人demo里的startMethodTracing里的参数

导出trace文件

进入到shell模式执行下面的指令语句adb pull /sdcard/testTraceView.trace E:\folder命令将testTraceView.trace导出到指定到E盘folder目录。

本人demo里需要执行的命令是: adb pull /sdcard/TraceView/MainActivity_2018-12-07_20_29_02.trace E:\folder

打开trace文件

进入到shell模式执行下面的指令语句traceview E:\folder\testTraceView.trace

TraceView界面介绍

Traceview 界面分上下两部分

上面是时间轴面板 (Timeline Panel)

左侧显示的是线程信息

右侧不同颜色代表不同方法(函数),同一个颜色越长代表该方法执行的时间越久

右侧鼠标放在上面会出现时间线纵轴,在顶部会显示当前时间线所执行的具体函数信息

空白表示这个时间段内没有执行内容

下面是分析面板

各列作用说明

列名

描述

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

同CPU Time/Call类似,只不过统计单位换成了真实时间

注意:每一个Time列还对应有一个用时间百分比来统计的列(如Incl Cpu Time列对应还有一个列名为Incl Cpu Time %的列,表示以时间百分比来统计的Incl Cpu Time)

android view分析工具,Android 性能分析工具之TraceView相关推荐

  1. java dump分析工具_java性能分析与常用工具

    本次源码已放在Github:https://github.com/nateshao/jvm-tuning 个人博客 https://nateshao.gitee.io http://www.nates ...

  2. mysql 索引分析工具_Mysql:性能分析以及Explain工具的使用

    ---恢复内容开始--- 1.介绍 Explain工具是用来分析sql语句性能的工具,他会显示出Mysql内部解析语句的状况 使用方法: explain+sql语句 例如 2.字段分析 一.ID字段 ...

  3. python程序分析,用Python编写分析Python程序性能的工具的教程

    用Python编写分析Python程序性能的工具的教程 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  用Python编写分析Python程序性能的工具的教程.tx ...

  4. sql2005 安装完成后只有配置工具,没有管理工具和性能分析工具

    安装完成后只有配置工具,没有管理工具和性能分析工具等. (1)版本问题,Express 版本的安装包中是没有管理工具.需要额外下载.   Microsoft SQL Server Management ...

  5. android view可视区域,Android使用WindowManager构造悬浮view

    一般在android显示一个View都是通过Activity的setContentView设置的,但是还有一种方法,可以直接使用WindowManager在整个应用的最上层绘制我们需要显示的view, ...

  6. android view使用方法,android – 如何使用getView()方法,它在哪里被调用?

    我是Android开发的新手,并且一直遵循Android网站上提供的教程.我目前在视图教程部分,特别是Grid Views: Hello, Grid View Tutorial的教程. 我无法通过适配 ...

  7. (52)性能分析 ---CPU的性能分析

    性能分析 -CPU的性能分析 服务器中一个硬件 什么是服务器? 由 计算机硬件 + 操作系统 + 应用服务构成,提供能力输出. 服务器的性能分析,需求分析哪些? 硬件性能分析 操作系统性能分析 项目性 ...

  8. java dump分析工具_Java 性能分析工具 (2):Java 内置监控工具

    引言 本文为 Java 性能分析工具系列文章第二篇,第一篇:操作系统工具.在本文中将介绍如何使用 Java 内置监控工具更加深入的了解 Java 应用程序和 JVM 本身.在 JDK 中有许多内置的工 ...

  9. java性能分析工具_java性能分析工具

    如何利用 JConsole观察分析Java程序的运行,进行排错调优 http://jiajun.iteye.com/blog/810150 如何使用JVisualVM进行性能分析 http://jia ...

  10. linux io分析工具,io性能分析工具-iostat

    linux-io性能分析 iostat (input/output statistics) 是一个linux系统监视工具,它可以用于收集并展示操作系统存储的输入.输出统计.它经常用于识别存储设备(本地 ...

最新文章

  1. C语言中使用MySQL(Linux下)
  2. mysql 嵌入式 c开发环境_【Linux】嵌入式C语言MySQL编程(libmysqlclient-dev使用)
  3. 计算机组成实验六MIPS汇编器,杭电计组实验6-MIPS汇编器与模拟器实验.doc
  4. 学Web前端你不能不知道的几点知识
  5. 为什么一定要用MQ中间件
  6. React Native 实现物流进度信息
  7. iOS CAGradientLayer颜色渐变
  8. linux grub 串口,grub重定向到串口 - Emmoblin Blog
  9. Linux定时删除过期日志文件
  10. android titlebar 高度是多少,什么是TitleBar的默认高度和Android中Titlebar中的默认TextSize?...
  11. 教程-Delphi资源文件(全面分析于使用)
  12. hdfs java api 读写文件操作_第十讲:通过JavaAPI对HDFS读写
  13. CentOS 安装完成后的配置
  14. linux(ubuntu) 查看系统设备信息
  15. 在MAME里如何设置组合键
  16. dlib重新训练dlib_face_recognition_resnet_model_v1.dat
  17. 职业生涯自我规划五步
  18. 云服务器1和1g装什么系统好,1核1g的云服务器装什么系统好
  19. android 微信图片选择,Android之仿微信图片选择器
  20. java.sql.SQLException: Field ‘habit_id‘ doesn‘t have a default value

热门文章

  1. Beyond Compare软件进行代码比对
  2. linux终端清除命令,清除Linux终端的6个命令
  3. 输入银行卡号匹配银行名称
  4. JDK与Eclipse版本
  5. VSCode 中文乱码设置
  6. 用Nginx禁止指定IP、国外IP访问我的网站
  7. Latex 语法总结(持续更新)
  8. 数据结构和算法基础(6)——常用十种算法
  9. MFC——SetTimer函数的用法
  10. 超详细linux部署ecshop流程