Android应用优化:优化工具

3403次阅读  |  发布于5年以前

一 Android Studio Profiler

Android Studio 3.0 提供了全新的Profiler工具来分析应用的CPU、内存和网络的使用情况,可以跟踪函数来记录代码的执行时间,采集堆栈数据,查看内存分配以及查看网络状态等,功能
十分强大。

Android Studio Profiler 官方文档:https://developer.android.com/studio/profile/android-profiler.html

它的界面构造图如下所示:

CPU、内存和网络数据的展示都是通过Event时间线实时展示的,如果你想查看某个指标的详情,只需点击当前图表即可,如下所示:

CPU分析器

内存分析器

网络分析器

1.1 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 自定义跟踪配置。

1.2 内存分析器

内存分析器可以用来实时展示各种内存使用的情况以及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()

1.3 网络分析器

网络分析器就比较简单了,用来实时显示网络请求的情况,网络的速度,接收和发出的数据量等信息,如下所示:

二 Systrace

Systrace

Systrace 官方文档:https://developer.android.com/studio/command-line/systrace.html

三 TraceView

TraceView可以用图形的形式来展示Trace Log,展示代码的执行时间、次数以及调用栈,便于我们分析。

TraceView 官方文档:https://developer.android.com/studio/profile/traceview.html

如何为应用生成跟踪日志呢,也很简单,如下所示:

// 在开始跟踪的地方调用该方法
Debug.startMethodTracing();

// 在结束跟踪的地方调用该方法
Debug.startMethodTracing();

Trace文件一般放在sdcard/Android/data/包名目录下,如下所示:

双击即可打开,如下所示:

Copyright© 2013-2019

京ICP备2023019179号-2