一、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 CountHeap CountSizeofShallow sizeRetained Size意义内存中该类的对象个数堆内存中该类的对象个数物理大小对象本身占有内存大小释放该对象后,节省的内存大小 名称depthShallow SizeDominating 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,我们需要确保每一帧花费的总时间都低于这条横线,这样才能够避免出现卡顿的问题。
本文作者:佚名 来源:51CTO 相关资源:七夕情人节表白HTML源码(两款)