Android性能优化之常用检测工具(三)

时间:2022-12-09 18:00:00

Lint工具

Android Lint工具是Android Studio中集成的一个Android代码提示工具

Memory Monitor工具

Android Studio自带的一个内存监视工具,可以很好的帮助我们进行内存实时分析;
蓝色部分表达free的内存,深色部分表示使用的内存;
当深色部分持续增加,则可能发生了内存泄漏
反之则可能GC进行里回收操作

使用TraceView工具优化app性能

有两种使用方法

通过代码生成精确范围的TraceView日志

//开始跟踪
Debug.startMethodTracing();
//结束跟踪
Debug.stopMethodTracing();
//需要权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
//导出日志
通过adb pull /sdcard/trace_log.trace/local/LOG导入日志至本地

通过Android Device Monitor生成TraceView日志

打开ADM>选择要调试的进程>点击工具栏中的start method profiling按钮
然后操作app >stop method profiling 即可查看日志

分析日志

时间轴:显示了不同线程在不同的时间段内的执行情况,每一行代表了不同的线程

profile:主要显示了如下的信息
Incl CPU Time>>某方法占用CPU的时间
Excl CPU Time>>某方法本身(即不包含子方法)占用Cpu的时间
Incl Real Time>>某方法真正执行的时间
Excl Real Time>>某方法本身真正执行的时间
Calls+RecurCall>>调用次数+递归回调的次数

分析思路:通常从Incl Cpu time和Calls+RecurCall,对占用时间长但调用次数少的方法进行重点分析

使用MAT工具分析App内存状态

使用方法:
打开ADM>点击要监听的线程>点击旁边的update heap按钮
即可以在旁边的heap窗口中查看信息,如果没有显示可以点击一下cause GC按钮

tip:当不停的点击Cause GC按钮时,如果data object 一栏中的Total size有明显变化,则有可能存在内存泄漏

过几秒钟以后可以点击菜单栏中的Dump HPROF File按钮,导出一个.hprof文件

但生成的.hprof文件并不能使用

打开cmd 并到H:\SDK\newsdk\platform-tools下
H:\SDK\newsdk\platform-tools>hprof-conv H:\SDK\com.junx.xingnengyouhua.hprof test.hprof
第一个.hprof是需要转换.hpfor 第二个是生成的.hprof(在platform-tools文件夹中)

接下来使用MAT工具打开这个文件即可看到相关的信息了,将这个文件直接拖入android studio也可以看到内容(但不是图形界面)
MAT>Open a Heap Dump>选择文件并导入
Histogram直方图,用于显示内存中每个对象的数量 大小 和名称
可以通过搜索过滤相应的关键字
Dominator Tree支配树:会将内存中的对象按照大小进行排列,并显示对象之间的引用结构.
点击后打开Dominator tree标签
对象已经按照”Retained Heap”进行排序, 通过分析内存占用大的对象来找出内存消耗的原因