Android性能测试--内存
前言:
近阶段都在探索android性能测试方面的东西,其中一个很重要的指标就是内存。对于内存,主要是一些gc是不是及时,或者说一些引用有没有及时释放,有没有导致oom或者内存持续增加导致卡顿,有没有大规模的内存抖动。近期项目由于个别模块大改,所以也就想把性能测试的东西在实际项目中实践进去,本文就是针对实践过程进行一下分享。
Memory Monitor:
1.1内测实时显示监控
Memory Monitor是android studio自带的一个非常好用的一个检测内存变化的工具,他能实时监控针对于某个进程的内存变化,帮助我们来判断内存是否及时释放,以及carsh是否超出了内存阀值。当然你也可以手动进行gc,看对象是否有得到释放。

这里是针对pris云阅读thread所进行的实时内存监控,通过一些列侧滑切换资讯正文后内存发生的变化,可以看到内存持续上升,且返回首页后仍没有明显下降,那么这里的确是出现了一系列问题,是应该关注的内存的问题。
1.2dump java heap
Memory Monitor中dump java heap,能够dump一段时间内的.hprof文件来进行对象分析,看看是什么对象占用了大量内存

1.3start allocation tracking
Memory Monitor中start allocation tracking 可以手机alloc文件,其中强大的图标数据,反应了一些线程的具体内存占用情况,是一个很好的分析工具,在使用Memory Monitor过程中可以具体使用Allocation Tracker来对thread进行内存分析,分析哪些activity其中对象的占用内存情况。
LeakCanary:
LeakCanary是一个开源的内存检测工具,下面是结合阅读项目的具体实践。
2.1编辑build.gradle
需要加入具体依赖
debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1'
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1'
这里需要说明一下,gradle依赖需要翻墙,不翻墙很有可能失败,最好用公司网络(虽然说失败过很多次,但还是可以成功的)或者vpn,声明后重新构建去下载依赖
2.2编辑Application.class开启LeakCanary
该类即androidManifest中声明的application类(自定义的会居多,具体可以从androidManifest查看)
在复写的oncreate()方法中加入如下代码:
LeakCanary.install(this);
2.3安装应用到手机
在安装阅读app的同时,会在手机中安装一个监控app
2.4测试apk
此时就可以开始日常测试啦,若有内测泄漏,会有toast提示正在dump数据
打开leak app就可以看到一条具体的内测泄漏信息(这里在toast提示之后会有一定的延迟,过一会儿才会在leak app显示)
这里具体定位到具体tread和activtiy,你还可以借助heap dump数据进行mat工具分析
这里的例子是引用的对象没有释放造成的MainGridActivity页面的内存泄漏
2.5可share一些数据文件
这里提供share heap dump文件
从git的源码可以看到,dump的.hprof文件在sdcard/Download/leakcanary目录下,你也可以通过adb shell下进行查看,并且pull到pc端来进行分析
LeakCanary开源地址:https://github.com/square/leakcanary
借助LeakCanary可以很好的反馈测试过程中的内存泄漏情况,以助于排查一些对象没有及时释放导致oom的情况。
本文为作者原创
禁止其他公众账号转载

Android性能测试--内存的更多相关文章
- android性能测试内存泄漏
1.什么是内存泄漏? 适用于该系统的内存使用内存泄漏,未回复(释放),该内存可以没有事业,也不能被其他人使用使用自己. 2.出有什么差别? 内存泄漏是分配出去的内存无法回收. 内存 ...
- Android性能测试-内存
前言: 近阶段都在探索android性能测试方面的东西,其中一个很重要的指标就是内存.对于内存,主要是一些gc是不是及时,或者说一些引用有没有及时释放,有没有导致oom或者内存持续增加导致卡顿,有没有 ...
- 腾讯优测优分享 | Android性能测试工具化实现
腾讯优测专业的移动云测试平台,自动化测试提供性能测试数据,云真机实时输出性能数据,让测试更简单! 1.Android性能测试介绍 提到Android性能测试,我们总免不了俗地要首先介绍下Android ...
- Android性能测试工具(一)之Emmagee
Android性能测试工具(一) 之Emmagee Emmagee是监控指定被测应用在使用过程中占用机器的CPU.内存.流量资源的性能测试小工具. 支持SDK:Android2.2以及以上版本 Emm ...
- Android性能测试
FPS和流畅度 FPS 1.dumpsys SurfaceFlinger –latency shell 脚本通过 dumpsys SurfaceFlinger --latency 数据计算 FPS 和 ...
- 【腾讯开源】Android性能测试工具APT使用指南
[腾讯开源]Android性能测试工具APT使用指南 2014-04-23 09:58 CSDN CODE 作者 CSDN CODE 17 7833 腾讯 apt 安卓 性能测试 开源 我们近日对腾讯 ...
- Android性能测试——Allocation Tracker(Device Monitor)
Android性能测试--Allocation Tracker(Device Monitor) Allocation Tracker 能做什么? 追踪内存分配信息,按顺序排列,这样我们就能清晰看出来某 ...
- Android 性能测试——Heap Viewer 工具
Android 性能测试--Heap Viewer 工具 Heap Viewer能做什么? 实时查看App分配的内存大小和空闲内存大小 发现Memory Leaks Heap Viewer使用条件 5 ...
- Android 性能测试——Memory Monitor 工具
Android 性能测试--Memory Monitor 工具 Memory Monitor能做什么? 实时查看App的内存分配情况 快速判断App是否由于GC操作造成卡顿 快速判断App的Crash ...
随机推荐
- JavaScript变量作用域(Variable Scope)和闭包(closure)的基础知识
在这篇文章中,我会试图讲解JavaScript变量的作用域和声明提升,以及许多隐隐藏的陷阱.为了确保我们不会碰到不可预见的问题,我们必须真正理解这些概念. 基本定义 作用范围是个“木桶”,里面装着变量 ...
- Visitor模式和Observer观察者模式
所谓访问者模式,就是不同服务提供者对同一种服务提供的服务内容不同. Typedef std::vector<Ivisitable> VisitbleArray; Typedef ...
- Mybatis3.3——源码阅读笔记
目录 Mybatis--Source阅读笔记 兵马未动,日志先行 异常 缓存 回收机制适配器 回收机制优化缓存 事务缓存 调试型缓存--日志缓存 解析 类型处理器 IO VFS Resource Re ...
- SourceInsight: sourceInsight4.0 修改默认字体
快捷键 Alt + Y
- C#读取CSV
public class CSVFileHelper { /// <summary> /// 将DataTable中数据写入到CSV文件中 /// </summary> /// ...
- 我的Android进阶之旅------>Android 关于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题
Android 设备的CPU类型通常称为ABIs 问题描写叙述 解决方法 1解决之前的截图 2解决后的截图 3解决方法 4建议 为什么你须要重点关注so文件 App中可能出错的地方 其它地方也可能出错 ...
- java框架篇---hibernate之CRUD操作
CRUD是指在做计算处理时的增加(Create).读取(Retrieve)(重新得到数据).更新(Update)和删除(Delete)几个单词的首字母简写. 下面列举实例来讲解这几个操作: 实体类: ...
- Spring MVC异常统一处理的三种方式
Spring 统一异常处理有 3 种方式,分别为: 使用 @ ExceptionHandler 注解 实现 HandlerExceptionResolver 接口 使用 @controlleradvi ...
- precision scale
precision意为“精密度.精确”(精度),表示该字段的有效数字位数了. scale意为“刻度.数值范围”(),表示该字段的小数位数. 举个简单的例子 123.45:precision = 5 , ...
- 关于Unity中NGUI的3D角色血条的实现
首先要到Unity的Assets Store里面去下载一个扩展的Package叫NGUI HUD Text v1.13(81),注意如果没有安装NGUI就必须先安装NGUI插件,否则会用不了,因为HU ...