天天看点

Android性能分析工具的使用

一、android studio-memory monitor

使用方法

run起你的项目,找到memory monitor窗口,选择memory  

Android性能分析工具的使用

[转]内存变化波形图

另外,还可选择查看cpu和gpu还有network的使用情况。 

Android性能分析工具的使用

网络使用波形图.png

其中network的频繁使用是造成应用耗电的关键,70%左右的电量是被上报数据,检查位置信息,定时检索后台广告信息所使用掉的。如何平衡这两者的电量消耗,就显得非常重要了。

二、android studio 1.5 preview 新玩具-heap snapshot

同样run起项目,进行一些操作之后点击左下角‘dump java heap’的按钮

Android性能分析工具的使用

每次点击之后会生成一个.hprof的文件

Android性能分析工具的使用

点击一个.hprof文件,查看右侧的analyzer test,能看到两个选项

一个是‘detect leaeked activites’,另一个是'find duplicate strings',点击右上角的绿色播放按钮,会自动分析heap dump去定位泄露的activity和重复的string,出现如下的analysis results。

Android性能分析工具的使用

该面板里的信息可以有三种类型:app heap/image heap/zygote heap.

分别代表app 堆内存信息,图片堆内存信息,zygote进程的堆内存信息。

各属性中英文对照表

名称

total count

heap count

sizeof

shallow size

retained size

意义

内存中该类的对象个数

堆内存中该类的对象个数

物理大小

对象本身占有内存大小

释放该对象后,节省的内存大小

depth

dominating size

深度

对象本身内存大小

管辖的内存大小

三、eclipse-allocation tracker(分配跟踪器)

点击“start tracking”,在应用中执行某个操作,然后点击“get allocations”。 

Android性能分析工具的使用

allocation tracker

特点

a.需要进行间断的操作

b.可定位到具体某一行代码

四、hierarchyviewer

使用hierarchyviewer查看需要检查的页面的层次,检查页面最深层数, 官方建议最好控制在10层以内

Android性能分析工具的使用

hierarchyviewer

布局层级优化方案:

1). 自定义控件使用merge标签来减少不必要的根节点;

2).使用drawbleleft,代替多添加一个imageview;

3).有时使用relativelayout会比linearlayout需要更少层次就能达到实现效果;

4).使用viewstub来隐藏控件,viewstub中的布局只有在你需要的时候才会渲染到主界面中;

...

五、leakcanary(android 和 java 内存泄露检测框架)

androidstudio

https://github.com/square/leakcanary

eclipse

https://github.com/softpower1991/leakcanarysample-eclipse

六、手机设置->开发者选项

1. show gpu overdraw

Android性能分析工具的使用

show gpu overdraw

蓝色,淡绿,淡红,深红代表了4种不同程度的overdraw情况,我们的目标就是尽量减少红色overdraw,看到更多的蓝色区域。

优化方案:

overdraw有时候是因为你的ui布局存在大量重叠的部分,还有的时候是因为非必须的重叠背景。例如某个activity有一个背景,然后里面 的layout又有自己的背景,同时子view又分别有自己的背景。仅仅是通过移除非必须的背景图片,这就能够减少大量的红色overdraw区域,增加 蓝色区域的占比。这一措施能够显著提升程序性能。

profile gpu rendering - 选中on screen as bars的选项

每一条柱状线都包含三部分,蓝色代表测量绘制display list的时间,红色代表opengl渲染display list所需要的时间,黄色代表cpu等待gpu处理的时间。

Android性能分析工具的使用

中间有一根绿色的横线,代表16ms,我们需要确保每一帧花费的总时间都低于这条横线,这样才能够避免出现卡顿的问题。

本文作者:佚名

来源:51cto

继续阅读