专栏首页测试一般不一般Monkey 做压力测试之余还可做内存泄露测试

Monkey 做压力测试之余还可做内存泄露测试

首先说3个测试内存泄露的三个动作,内存GC,退出测试app,关闭测试APP的进程的区别;

内存GC系统回收是回收无用的对象占用的空间,退出测试app不一定会就会GC,关闭测试APP直接就是所有内存都释放了,所以在测试内存过程中,要使用GC进行内存释放;

monkey压力测试内存泄露检查步骤如下:

一、搭建环境

要有SDK的配置环境,MAT内存分析工具(下载地址:https://pan.baidu.com/s/1rQ6A-DWEWWy2ZrPoJ78AAQ 密码:o0ls )

测试的apk一定要为debug包

二、monkey运行

根据业务场景用monkey进行压力测试,因为monkey是无理性随便点击会发现有很多重复性很高的操作,针对这个现象想到了内存分析~

注意:monkey 命令中不要使用忽略崩溃跟忽略超时错误关键词,命令为-ignore-crashes ,-ignore-timeouts,不然会导出的内存不是整体操作,因为闪退内存就释放了,

monkey运行,手机连接电脑,并且打开ddms的内存监控,运行结束后,点击GC

三、内存文件的获取跟转换

进入dos 输入命令:adb shell am dumpheap app包名 /data/local/tmp/xx.hprof (目的是生个一个hprof文件)

生成后你可以直接到手机data/local/tmp 进行查看有没有生成XX.hprof,然后把手机生成的hprof文件pull到本地电脑上,然后进入到改文件的目录下进行内存文件转化

转化命令为 hprof-conv xxx.hprof xxxx_1.hprof,其中xxx_1.hprof就是MAT内存工具要打开的内存文件。

具体案例步骤如下几图:

四、用MAT软件打开文件进行分析是否内存泄露常规方法

MAT软件打开内存文件后,一般有三种

1.Histogram

输入关键词activity,然后进行过滤,对于看Objects实例多的,进行分析,疑似内存泄露的,直接右击 选择Merge Shortest Paths to GC Root,并在选项中选择exclude all phantom/soft etc. references 。然后分析具体哪里内存泄露

2.Dominator Tree

输入关键词activity,然后进行过滤,会看到很多重复的activity,然后进行分析,发现疑似内存泄露的,就直接右击 选择Merge Shortest Paths to GC Root,并在选项中选择exclude all phantom/soft etc. references ,然后分析具体哪里内存泄露

3.OQL

输入:select * from instanceof android.app.Activity ,然后点击执行红色!图标

显示重复的Activit多的进行分析,发现疑似内存泄露的,就直接右击 选择Merge Shortest Paths to GC Root,并在选项中选择exclude all phantom/soft etc. references ,然后分析具体哪里内存泄露

三个方法图标

右键选择GC

另外:也可以进行文件对比,但前提就是 A操作完GC,生成内存文件1,然后继续操作,GC,再生成文件2,文件转换后,用MAT打开,选择Histogram,然后Navigation History 进行添加对比

总结:以上是我个人对Android 内存泄露 测试一些见解,小弟菜鸟一枚,有错误的,欢迎反馈,另外内存泄露也可以用ddms工具或者adb等方式测试内存~~

本文分享自微信公众号 - 测试一般不一般(TestAndTester),作者:测试-安仔

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-04-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 安卓APP性能监测工具的Q&A

    通过 adb shell dumpsys activity activities | grep intent 获取

    厦门-安仔
  • 经典Bug永流传---每周一“虫”(二十七)

    一个人势单力薄,融入团队就能立于不败,一滴水很快挥发,汇入大海就成波涛澎湃。如果你是一滴水,只要你愿意融入大海,整个大海就是你的了,因为你已和整个...

    厦门-安仔
  • 经典Bug永流传---每周一“虫”(十)

    不是每个浏览器都支持gzip的,如何知道客户端是否支持gzip呢,抓包,看请求头中有个Accept-Encoding来标识对压缩的支持。原理是:当客户端请求到服...

    厦门-安仔
  • 一次“内存泄露”引发的血案

    对性能不佳的Ark Server进行了改造和重写。重编发布一段时间后,结果发现新发布的Svr的机器内存一直在上涨。如下图示:

    烂猪皮
  • 软件性能测试(连载9)

    Linux内核给每个进程都提供了一个独立的虚拟地址空间,并且这个地址空间是连续的。Linux的空间又分为内核空间和用户空间,在32位中,内核空间占1G,用户空间...

    小老鼠
  • 万字长文,别再说你不懂Linux内存管理了,30 张图给你安排的明明白白

    之前写了两篇详细分析 Linux 内存管理的文章,读者好评如潮。但由于是分开两篇来写,而这两篇内容其实是有很强关联的,有读者反馈没有看到另一篇读起来不够不连贯,...

    程序IT圈
  • 在 Python 中是如何管理内存的?

    Python内存池:内存池的概念就是预先在内存中申请一定数量的,大小相等 的内存块留作备用,当有新的内存需求时,就先从内存池中分配内存给这个需求,不够了之后再申...

    宇宙之一粟
  • C语言最大难点揭秘:编程的祸根!

    本文将带您了解一些良好的和内存相关的编码实践,以将内存错误保持在控制范围内。内存错误是 C 和 C++ 编程的祸根:它们很普遍,认识其严重性已有二十多年,但始终...

    C语言与CPP编程
  • Devtools 老师傅养成[7] - Memory 内存

    google developers 官方文档: https://developers.google.com/web/tools/chrome-devtools/

    scarsu
  • iOS 性能优化实践:头条抖音如何实现 OOM 崩溃率下降50%+

    OOM 其实是Out Of Memory的简称,指的是在 iOS 设备上当前应用因为内存占用过高而被操作系统强制终止,在用户侧的感知就是 App 一瞬间的闪退,...

    ios-lan

扫码关注云+社区

领取腾讯云代金券