吴老的《selenium webdriver 实战宝典》出版了!

1.Android Studio分析内存泄露

1.1.简述

Android Studio是谷歌专门针对Android应用开发所推出的一套IDE,在AndroidStudio中,可以通过工具自身集成的Android Monitor来对安装模拟器及APPCPU、内存、网络、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表示重复的字符串,一般是研发直接在代码中填写字符串,没有按照JAVAAndroid的规范填写,一般可创建一个基类,里面用静态声明所需要的字符串,使用时引入,或者在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







相关问题推荐