吴老的《selenium webdriver 实战宝典》出版了!
1.Android Studio分析内存泄露1.1. 简述
Android Studio是谷歌专门针对Android应用开发所推出的一套IDE,在AndroidStudio中,可以通过工具自身集成的Android Monitor来对安装模拟器及APP的CPU、内存、网络、GPU等使用信息。在本文中主要针对于APP的内存分析,其他功能不做过多的阐述。
1.2.Android Monitor 监控APP 的内存资源信息
打开Android Studio,在界面的最下面选择Android Monitor标签页,打开Android Monitor
在Android Monitor的最上面,第一个下拉框选择要监控的手机/模拟器,第二个下拉框中选择要监控的进程,在下拉框下面的标签页中,选择Monitors,然后拖到Memory一项,即可实现实时监控内存性能。
在内存项中有五个按钮
Enable,暂停内存信息的收集,再次点击后恢复内存信息的收集
Initiable GC,执行GC
Dump Java Heap,获取当前JAVA堆快照
Start Allocation Tracking,开始内存分析,再次点击后结束内存分析
Memory monitor help,帮助
在监控图表中,横坐标代表着监控时间,纵坐标代表着内存大小,蓝色Allocated表示堆中已使用的内存,浅黑色Free表示堆中未使用的内存
1.3. 分析堆快照
在Android Monitor中单击Initiable GC按钮手工执行一次GC释放内存,然后单击Dump Java Heap按钮获取当前的JAVA堆快照
使用此功能后,会生成快照文件
命名规则:包名_年月日_时分.hprof
快照文件可以在Android Studio最右边选择Captures标签页中看到
内存分析信息,会在右侧窗口中自动打开
内存分析有两个下拉列表
App heap表示App的堆信息
Image heap表示UI的堆信息
Zygote heap表示Android核心Zygote进程的堆信息
一般选择App heap即可
第二个下拉列表是选择数据展示的方式
Class List View表示以类的方式
Package Tree View表示以包结构树的形式
内存分析中有三个窗口
左上第一个窗口表示类的内存信息,默认以Retained Size由大到小排列
名称
含义
Class Name
类名
Total Count
出现次数
Heap Count
堆总数
Sizeof
内存容量度量大小
Shallow Size
浅堆大小
Retained Size
保留堆大小
单击选中一个类之后,即会在右侧第二个窗口中显示该类实例出现的具体信息
名称
含义
Instance
实例(数字表示序号)
Depth
深度
Shallow Size
浅堆大小
Dominating Size
管辖的内存大小
单击选中一个实例后,会在下方窗口出现实例的引用树
名称
含义
Reference Tree
引用树
Depth
深度
Shallow Size
浅堆大小
Dominating Size
管辖的内存大小
在上面三个窗口中,都可以通过右键选择Jump to source来跳转到相应的代码中
通过AnalyzerTaskers分析内存泄露
单击左侧Analyzer Taskers标签页,即可打开Analyzer Tasker窗口
打开后的窗口如下
在Analyzer Tasks中又两个选项
Detect Leaked Activities 是选择内存泄露的Activity
Find Duplicate Strings 是选择重复的字符串
分析内存泄露时,只需要点击Analyzer Tasks右侧的三角按钮即可,分析结果如下
Analysis Results表示此次分析的内存泄露的结果
Analysis Result Explanation表示针对内存泄露的结果的说明,需手工填写
Leaked Activities表示发现有内存泄露的Activity,一般可能出现的原因是Activity被绑定在一个持久化的实例上,导致Activity无法再生命周期结束后被销毁;
Duplicated Strings表示重复的字符串,一般是研发直接在代码中填写字符串,没有按照JAVA或Android的规范填写,一般可创建一个基类,里面用静态声明所需要的字符串,使用时引入,或者在Android项目中的res/values/Strings.xml文件中声明所使用的字符串,通过Android提供的方法引入即可。
1.4.Allocation Tracking 跟踪分析内存
在Android Monitor中使用Start AllocationTracking按钮可以跟踪分析内存
操作方法:
1.单击Start AllocationTracking按钮;
2.操作需要监控的APP;
3.再次单击Start AllocationTracking按钮
4.生成结果文件
结果文件依旧可以在Captures中看到
在Allocation Tracking目录里
命名规则:包名_年月日_时分.alloc
结果文件分析窗口如下:
在下拉窗口中,可以选择
Group by Method 通过线程执行的方法分组
Group by Allocator 通过包分组
Jump to Source按钮可以跳转到定位的代码
可以生成并打开图表
在下面的窗口中可以显示线程执行的方法总数,以及占用存储的大小
1.5.Android Studio 导出.hprof 文件
Android Studio支持手动导出.hprof文件,以方便使用MAT工具进行进一步的内存泄露分析。
在Captures窗口中,右键需要导出的.hprof文件,选择Exportto standard.hprof,在弹出的窗口中输入名称和存储路径即可。
安装喜马拉雅app,搜索“光荣之路”可以收听吴老和他的朋友们分享的35小时测试知识语音
光荣之路
软件测试培训
官网:www.gloryroad.cn
微信公众号:gloryroadtrain
性能测试QQ群:415987441
测试招聘QQ群: 203715128
Java2群:569534627
Python群:457561756
咨询V信:mengqiao626
咨询QQ:53617154
光荣之路公开课大讲堂:413908278
标签: 安卓模拟器java版