Android Studio 3.0采用全新的Android Profiler窗口取代AndroidMonitor工具。这些全新的分析工具能够提供关于应用CPU、内存和网络Activity的实时数据。可以执行基于样本的函数跟踪来记录代码执行时间、采集堆转储数据、查看内存分配,以及查看网络传输文件的详情。

1.使用CPU性能剖析器检查CPU活动

优化应用的CPU使用率能带来诸多好处,如提供更快、更顺畅的用户体验,以及延长设备电池续航时间。

您可以使用CPU性能分析器在与应用交互时实时检查应用的CPU使用率和线程活动,也可以检查记录的方法轨迹、函数轨迹和系统轨迹的详情。

使用CPU profiler来解决哪些性能问题:

①可以使用CPU profiler来分析CPU耗时问题,解决由于CPU资源消耗而产生的性能问题。

②可以使用CPU profiler来查看主线程中每个方法的耗时情况,以及每个方法的调用栈,可以很方便的分析卡顿产生的原因,以及定位到具体的代码方法。

③可以使用它来进行启动优化分析,查看APP启动时的耗时问题。

④可以使用它来查看线程的执行情况,定位线程的CPU资源占用等问题。

CPU性能分析器记录和显示的详细信息取决于您选择的记录配置:

①System Trace 系统跟踪数据:捕获精细的详细信息,以便检查应用与系统资源的交互情况。

②Method and function traces 方法和函数跟踪数据:对于应用进程中的每个线程,你可以了解一段时间内执行了哪些方法 (Java) 或函数 (C/C++),以及每个方法或函数在其执行期间消耗的 CPU 资源。你还可以使用方法和函数跟踪数据来识别调用方和被调用方。调用方是指调用其他方法或函数的方法或函数,而被调用方是指被其他方法或函数调用的方法或函数。你可以使用此信息来确定哪些方法或函数负责调用常常会消耗大量资源的特定任务,并优化应用的代码以避免不必要的工作。

记录方法跟踪数据时,您可以选择“sampled”或“instrumented”记录。记录函数跟踪数据时,只能使用“sampled”记录。

CPU profiler的使用:

①打开CPU profiler

要打开 CPU Profiler,请按以下步骤操作:

(1)连接真机或虚机设备,确保可以进行ADB调试,依次选择 View > Tool Windows > Profiler 或点击工具栏中的 Profile 图标。

(2)当APP运行起来后,点击 CPU 时间轴上的任意位置以打开 CPU Profiler。

②CPU Profiler视图介绍

当你打开 CPU Profiler 时,它会立即开始显示应用的 CPU 使用率和线程活动。系统会显示类似下图的界面:

CPU Profiler 的默认视图包括以下时间轴(与图中123对应):

(1)事件时间轴:显示应用中的 Activity 在其生命周期内不断转换而经历各种不同状态的过程,并指示用户与设备的交互,包括屏幕旋转事件。

(2)CPU 时间轴:显示应用的实时 CPU 使用率(以占总可用 CPU 时间的百分比表示)以及应用当前使用的线程总数。此时间轴还显示其他进程(如系统进程或其他应用)的 CPU 使用率,以便您可以将其与您应用的使用率进行对比。您可以通过沿时间轴的水平轴移动鼠标来检查历史 CPU 使用率数据。

(3)线程活动时间轴:列出属于应用进程的每个线程,并使用下面列出的颜色在时间轴上指示它们的活动。记录跟踪数据后,您可以从此时间轴上选择一个线程,以在跟踪数据窗格中检查其数据。

绿色:表示线程处于活动状态或准备使用 CPU。也就是说,它处于正在运行或可运行状态。

黄色:表示线程处于活动状态,但它正在等待一项 I/O 操作(如磁盘或网络 I/O),然后才能完成它的工作。

灰色:表示线程正在休眠且没有消耗任何 CPU 时间。当线程需要访问尚不可用的资源时,有时会发生这种情况。在这种情况下,要么线程自主进入休眠状态,要么内核将线程置于休眠状态,直到所需的资源可用。

记录跟踪数据:

要开始记录跟踪数据,请从 CPU Profiler 顶部的下拉菜单中选择记录配置,然后点击 Record。

如图,CPU Profiler 显示了正在进行的记录的状态、持续时间和类型:

与您的应用交互,然后在完成时点击 Stop。性能分析器会自动在轨迹窗格中显示其跟踪信息。

①选定范围:确定要在跟踪数据窗格中检查所记录时间的哪一部分。当您首次记录跟踪数据时,CPU Profiler 会自动在 CPU 时间轴上选择记录的完整长度。要仅检查所记录时间范围的一部分的跟踪数据,请拖动突出显示区域的边缘。

②时间戳:指示所记录跟踪数据的开始和结束时间(相对于分析器开始收集 CPU 使用率信息的时间)。要选择完整的记录,请点击时间戳。

③跟踪数据窗格:显示您选择的时间范围和线程的跟踪数据。只有在您至少记录一条跟踪数据后,才会显示此窗格。在此窗格中,您可以选择如何查看每个堆栈轨迹(使用跟踪数据标签),以及如何测量执行时间(使用时间参考下拉菜单)。

④跟踪数据窗格标签:选择如何显示跟踪数据详细信息。选择以下选项之一,以确定如何测量每次调用的时间信息:

Wall clock time:表示实际经过的时间。

Thread time:时间信息表示实际经过的时间减去线程在该时间内没有消耗 CPU 资源的所有部分。对于任何给定的调用,其线程时间始终小于或等于其挂钟时间。使用线程时间可以让您更好地了解线程的实际 CPU 使用率中有多少是给定方法或函数消耗的。

如何准确的定位到方法:

在线程列表中,选择相应线程,例如main线程,选中后双击展开,这时我们就可以看到详细的方法调用情况以及耗时详情了。

如图:

提示:可以使用键盘按键”W“放大,使用”S"缩小视图;也可以按住ctrl同时滑动滚轮。

Android 性能分析工具相关推荐

  1. Android 性能分析工具整理汇总

    Android性能分析工具整理汇总 字数1852 阅读3579 评论10 喜欢54 Android性能分析工具整理汇总 把做Android开发以来碰到的一些不错的性能分析工具做个整理汇总... Deb ...

  2. 正确使用 Android 性能分析工具——TraceView

    前面唠叨 最近公司app中有些列表在滑动的时候会有卡顿现象,我就开始着手解决这些问题,解决问题之前首先要分析列表滑动的性能瓶颈在什么地方.因为之前不会正确使用TraceView这个工具,主要是看不懂T ...

  3. 正确使用Android性能分析工具——TraceView

    原址 前面唠叨 最近公司app中有些列表在滑动的时候会有卡顿现象,我就开始着手解决这些问题,解决问题之前首先要分析列表滑动的性能瓶颈在什么地方.因为之前不会正确使用TraceView这个工具,主要是看 ...

  4. Android性能分析工具整理汇总

    把做Android开发以来碰到的一些不错的性能分析工具做个整理汇总... Debug GPU Overdraw 类型:系统自带功能UI渲染检测功能(打开Settings,然后到 Developer O ...

  5. Android 性能分析工具dumpsys的使用(自己增加一部分在后面)

    Android提供的dumpsys工具可以用于查看感兴趣的系统服务信息与状态,手机连接电脑后可以直接命令行执行adb shell dumpsys 查看所有支持的Service但是这样输出的太多,可以通 ...

  6. Android 常用的性能分析工具详解:GPU呈现模式, TraceView, Systrace, HirearchyViewer(转)...

    此篇将重点介绍几种常用的Android性能分析工具: 一.Logcat 日志 选取Tag=ActivityManager,可以粗略地知道界面Displaying的时间消耗.当我们打开一个Activit ...

  7. Android系统性能优化(54)---Android性能分析专题

    Android性能分析专题 1.  背景:Android App优化, 要怎么做? 2.  Android App优化之性能分析工具 3.  Android App优化之提升你的App启动速度之理论基 ...

  8. 性能分析工具 Android TraceView

    1. TraceView 简介 Traceview是android平台配备一个很好的性能分析的工具.它可以通过图形化的方式让我们了解我们要跟踪的程序的性能,并且能具体到每个方法的执行时间 Tracev ...

  9. Android APP性能分析工具大全

    目录 官方推荐工具 第三方工具 一,官方工具 1.1,TraceView 1.2,StrictMode 1.3,Systrace 1.4,Hierarchy Viewer 1.5,AndroidStu ...

最新文章

  1. boost::signals2::deconstruct 作为构建后的工厂函数的测试程序
  2. CodeForces - 850C Arpa and a game with Mojtaba(博弈+sg函数)
  3. spark shuffle再补充
  4. Vue指令篇_v-if、v-else、v-else-if
  5. Ribbon中的负载均衡算法实现
  6. LaTex的book类型中,目录及chapter前自动插入空白页面
  7. python中高阶函数和装饰器_Python高阶函数与装饰器函数的深入讲解
  8. 了解Binder机制原理和底层实现
  9. 如何用计算机制作统计图,统计图制作_ai的环形统计图怎么制作
  10. 设置ie默认版本为ie7
  11. 硬盘根目录里的Msdia80.dll文件是干什么用的
  12. 解决屏幕大小不一导致页面下方出现多余空白的问题
  13. 如何将多个excel表格合并成一个_如何把两个excel表合并成一个
  14. 【达摩院OpenVI】视频目标渐进式Transformer跟踪器ProContEXT
  15. sandboxie游戏不能运行在虚拟环境中如何解决_Sandboxie:这款曾卖一百多的知名沙盘软件,现在免费开源了...
  16. mp2格式怎么转换mp3?
  17. kubectl全部命令用法示例
  18. ORACLE RAC停止和启动
  19. 【Unity3D】相机
  20. OGG Data Pump进程

热门文章

  1. 软件开发方案设计文档ppt
  2. Web of Science(WOS)导出参考文献的格式缩略词说明
  3. 内向女生适合学计算机吗,性格内向的人适合学计算机专业吗
  4. 计算机基础-------磁盘数据存储方式的解析
  5. 解读订阅号和服务号的区别
  6. petalinux 编译,源码编译
  7. vue电商开发记录1—实现电商图片放大镜,移入放大效果
  8. javascript读取sgf格式文件源码下载
  9. 05组团队项目-Alpha冲刺-1/6
  10. 写给Java开发者的Python入门