优化应用程序的 CPU 使用率有很多优点,例如提供更快、更流畅的用户体验以及延长设备电池寿命。
您可以在与应用程序交互时使用 CPU Profiler 实时检查应用程序的 CPU 使用情况和线程活动,也可以检查记录的方法跟踪、函数跟踪和系统跟踪中的详细信息。
CPU Profiler 记录和显示的详细信息取决于您选择的记录配置:
- 系统跟踪:捕获细粒度的详细信息,使您可以检查应用程序如何与系统资源交互。
-
方法和函数跟踪:对于应用程序进程中的每个线程,您可以了解一段时间内执行了哪些方法(Java)或函数(C/C++),以及每个方法或函数在执行过程中消耗的CPU资源。您还可以使用方法和函数跟踪来识别调用者 和被调用者。调用者是调用另一个方法或函数的方法或函数,被调用者是由另一个方法或函数调用的方法或函数。您可以使用此信息来确定哪些方法或函数导致过于频繁地调用特定的资源密集型任务,并优化应用程序的代码以避免不必要的工作。
记录方法迹线时,您可以选择采样记录或仪器 记录。记录函数迹线时,只能使用采样记录。
有关使用和选择每个跟踪选项的详细信息,请参阅 选择记录配置。
CPU 分析器概述
要打开 CPU Profiler,请执行以下步骤:
-
选择“视图”>“工具窗口”>“探查器”或单击工具栏中的“探查器” 。
如果“选择部署目标”对话框出现提示,请选择要部署应用程序以进行分析的设备。如果您已通过 USB 连接设备但未看到该设备列出,请确保您已 启用 USB 调试。
-
单击CPU时间线中的任意位置以打开 CPU Profiler。
当您打开 CPU Profiler 时,它会立即开始显示应用程序的 CPU 使用情况和线程活动。您应该看到类似于图 1 的内容。
图 1.CPU Profiler 中的时间线。
如图 1 所示,CPU Profiler 的默认视图包括以下时间线:
- 事件时间线:显示应用程序中在生命周期中不同状态之间转换的活动,并指示用户与设备的交互,包括屏幕旋转事件。有关在运行 Android 7.1(API 级别 25)及更低版本的设备上启用事件时间线的信息,请参阅 启用高级分析。
- CPU 时间线:显示应用程序的实时 CPU 使用情况(占总可用 CPU 时间的百分比)以及应用程序正在使用的线程总数。时间线还显示其他进程(例如系统进程或其他应用程序)的 CPU 使用情况,因此您可以将其与应用程序的使用情况进行比较。您可以通过沿着时间线的水平轴移动鼠标来检查历史 CPU 使用率数据。
- 线程活动时间线:列出属于您的应用程序进程的每个线程,并使用下面列出的颜色沿着时间线指示其活动。记录跟踪后,您可以从此时间线中选择一个线程,以在跟踪窗格中检查其数据。
- 绿色:线程处于活动状态或准备好使用 CPU。也就是说,它处于正在运行或可运行状态。
- 黄色:线程处于活动状态,但正在等待 I/O 操作(例如磁盘或网络 I/O),然后才能完成其工作。
- 灰色:线程正在休眠,不消耗任何 CPU 时间。当线程需要访问尚不可用的资源时,有时会发生这种情况。线程要么进入自愿睡眠状态,要么内核将线程置于睡眠状态,直到所需的资源可用。
CPU Profiler 还报告 Android Studio 和 Android 平台添加到应用程序进程中的线程的 CPU 使用情况,例如
JDWP
、Profile Saver
、Studio:VMStats
、Studio:Perfa
和Studio:Heartbeat
(尽管线程活动时间线中显示的确切名称可能有所不同)。 Android Studio 会报告此数据,以便您可以确定线程活动和 CPU 使用率实际上是由应用代码引起的。