Android性能分析工具的使用
创始人
2025-02-13 13:11:07
0次

一、Android Studio-Memory Monitor

使用方法

run起你的项目,找到Memory Monitor窗口,选择Memory   

 

[转]内存变化波形图

另外,还可选择查看CPU和GPU还有NetWork的使用情况。  

 

网络使用波形图.png

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

二、Android Studio 1.5 Preview 新玩具-Heap Snapshot

使用方法

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

 

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

 

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

一个是‘Detect Leaeked Activites’,另一个是'Find Duplicate Strings',点击右上角的绿色播放按钮,会自动分析heap dump去定位泄露的activity和重复的string,出现如下的Analysis Results。

 

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

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

各属性中英文对照表

名称 Total Count Heap Count Sizeof Shallow size Retained Size
意义 内存中该类的对象个数 堆内存中该类的对象个数 物理大小 对象本身占有内存大小 释放该对象后,节省的内存大小
名称 depth Shallow Size Dominating Size
意义 深度 对象本身内存大小 管辖的内存大小

三、Eclipse-Allocation Tracker(分配跟踪器)

使用方法

点击“Start Tracking”,在应用中执行某个操作,然后点击“Get Allocations”。 

 

Allocation Tracker

特点

a.需要进行间断的操作

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

四、hierarchyviewer

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

 

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

 

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处理的时间。 

 

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

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
只需三步,让你掌握阿尔法路由器... 请参照以下阿尔法路由器设置方法,通过浏览器进入及设置宽带路由器。经过这三个步骤的设置,基本上能够熟悉...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...