Android Studio 3.0 提供了全新的Profiler工具来分析应用的CPU、内存和网络的使用情况,可以跟踪函数来记录代码的执行时间,采集堆栈数据,查看内存分配以及查看网络状态等,功能 十分强大。
Android Studio Profiler 官方文档:https://developer.android.com/studio/profile/android-profiler.html
它的界面构造图如下所示:
CPU、内存和网络数据的展示都是通过Event时间线实时展示的,如果你想查看某个指标的详情,只需点击当前图表即可,如下所示:
CPU分析器
内存分析器
网络分析器
CPU分析器可以帮助我们实时的检查应用的CPU使用率,可以跟踪记录函数,帮助我们调试和优化应用代码,降低CPU使用率可以获得更加流畅的用户体验,延长电池续航,还可以 让我们的应用在一些旧设备上依然保持良好的性能。
CPU分析器界面如下所示:
我们来讲一下上述小红圈数字代表的含义:
我们来看看如何去跟踪函数调用栈,当点击跟踪按钮就可以开始跟踪,再次点击结束跟踪,跳出以下界面:
根据数据可以用图表或者调用链来表示,如下所示:
Call Chart:提供函数跟踪的图表表示形式,水平轴表示函数调用的时间段和时间,并妍垂直轴显示其被调用者,橙色表示系统API,绿色表示应用API,蓝色表示第三方API(包括Java API)。
Flame Chart:提供了一个倒置的Call Chart,功能和Call Chart相同。
Top Down:展示了一个函数调用列表,它是一个树型结构。
Bottom Up:展示了一个函数调用列表,它按照CPU消耗时间的最多(或者最少)来排序函数。
除此之外,我们也可以通过 Recording Configurations 自定义跟踪配置。
内存分析器可以用来实时展示各种内存使用的情况以及GC的情况等。
内存分析器界面如下所示:
整个界面实时显示各种内存的使用情况:
内存分析器也可以针对函数对内存的使用情况进行跟踪,如下所示:
我们还可以点击上面的dunp java heap按钮来捕获堆转储,来帮助我们分析内存分配和内存泄漏相关信息,如下所示:
在类列表中,我们可以查看以下信息:
在类列表顶部,我们可以使用左侧下拉列表在以下堆转储之间进行切换:
默认情况下,此堆中的对象列表按类名称排列。 我们可以使用其他下拉列表在以下排列方式之间进行切换:
默认情况下,此列表按 Retained Size 列排序。 您可以点击任意列标题以更改列表的排序方式。
在 Instance View 中,每个实例都包含以下信息:
Depth:从任意 GC 根到所选实例的最短 hop 数。 Shallow Size:此实例的大小。 Retained Size:此实例支配的内存大小(根据 dominator 树)。
另外,堆转储信息还可以被到处成文件,点击Export heap dump as HPROF file按钮可以将堆转储信息导出成HPROF文件,但是如果我们想要用其他工具(例如:MAT)分析HPROF文件,还要将其 转换成Java SE的HPROF文件,如下所示:
hprof-conv heap-original.hprof heap-converted.hprof
除此之外我们还可以调用以下方法在代码里创建堆转储信息,如下所示:
Debug.dumpHprofData()
网络分析器就比较简单了,用来实时显示网络请求的情况,网络的速度,接收和发出的数据量等信息,如下所示:
Systrace
Systrace 官方文档:https://developer.android.com/studio/command-line/systrace.html
TraceView可以用图形的形式来展示Trace Log,展示代码的执行时间、次数以及调用栈,便于我们分析。
TraceView 官方文档:https://developer.android.com/studio/profile/traceview.html
如何为应用生成跟踪日志呢,也很简单,如下所示:
// 在开始跟踪的地方调用该方法
Debug.startMethodTracing();
// 在结束跟踪的地方调用该方法
Debug.startMethodTracing();
Trace文件一般放在sdcard/Android/data/包名目录下,如下所示:
双击即可打开,如下所示:
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8