Monkey是一个快速检查内存泄露的好工具,可以初步发现较明显的内存泄露问题。

什么是内存泄露?是指不在使用的对象持续占有内存,造成内存空间的浪费。

检查内存泄露的基本操作步骤:

1.运行Monkey或者固定自动化用例

adb shell monkey -p cn.microinvestment.weitou --pct-touch 100 --ingore-crashes --throttle 1000 -s 100 -v -v 50

2.监控内存值,如果出现过大等递增异常则保存HPROF文件

查看应用内存的命令:adb shell dumpsys meminfo(进程名) 

以下为一个bat脚本,主要 是记录第一行的和最后一行总共的内存,一直循环查询:

set process=cn.microinvestment.weitou

@adb sehll dumpsys meminfo %process% | findstr "Pss"

:m

@adb sehll dumpsys meminfo %process% | findstr "TOTAL"

@ping -n 5 127.1>nul

@goto m

运行后,如图:

如果发现内存过大,则保存HPROF文件:

adb shell am dumpheap <进程名> <保存路径>

3.但是生成的HPROF文件怎么查看呢?我们要用到一个工具MAT来查看,但是首先还要这个HPROF文件转换成MAT可读的文件,在Android SDK tool里面有个hprof-conv命令:

hprof-conv<原HPROF文件路径><转换后的HPROF路径>

4.用MAT工具打开转换后的HPROF文件:

MAT下载:http://www.eclipse.org/mat/

安装好JDK,配置好环境后打开MAT工具,选择File-Open File...,,再选择刚转换后的文件。

一般来说会选择第一个,Leak Suspects Report

会看到report的概览:

再下面是问题列表: 

我们可以通过SQL语句来查询对象有没有被释放掉,如果有多个相同的对象,则会存在内存泄露的问题。      

在SQL查询框里输入:select * frominstanceof android.app.Activity,然后点击右上角的黑色感叹号按钮。

如果出现多个相同的对象,则存在内存泄露。

Monkey总结的更多相关文章

  1. 【初学python】使用python调用monkey测试

    目前公司主要开发安卓平台的APP,平时测试经常需要使用monkey测试,所以尝试了下用python调用monkey,代码如下: import os apk = {'j': 'com.***.test1 ...

  2. Monkey Patch/Monkey Testing/Duck Typing/Duck Test

    Monkey Patch Monkey Testing Duck Typing Duck Test

  3. monkey命令选项参考

    基本参数:     --help              打印帮助消息 -v  可以在命令行中出现多次,每次一个-V选项都会增加monkey向命令行打印输出的详细级别.默认的级别0只会打印启动信息. ...

  4. monkey之monkey日志分析

    一.初步分析方法:Monkey测试出现错误后,一般的差错步骤为以下几步:1.找到是monkey里面的哪个地方出错2.查看Monkey里面出错前的一些事件动作,并手动执行该动作3.若以上步骤还不能找出, ...

  5. monkey之monkey命令详解

    四大类-- 常用选项.事件选项.约束选项.调试选项 1.常用选项 --help:打印帮助信息 -v:指定打印信息的详细级别,一个-v增加一个级别 ,默认级别为 0 .用于指定反馈信息级别(信息级别就是 ...

  6. monkey之三:monkey测试测略(摘抄)

    一.分类 Monkey测试针对不同的对象,不同的目的,采用不同的测略方案. 测试类型分为: 应用程序的稳定性测试和压力测试 测试对象分为: 单个APK和多个APK集合 测试目的分为: 解决问题的测试( ...

  7. Android APP压力测试(三)之Monkey日志自动分析脚本

    Android APP压力测试(三) 之Monkey日志自动分析脚本 前言 上次说要分享Monkey日志的分析脚本,这次贴出来分享一下,废话不多说,请看正文. [目录] 1.Monkey日志分析脚本 ...

  8. Android APP压力测试(二)之Monkey信息自动收集脚本

      Android APP压力测试(二) 之Monkey信息自动收集脚本 前言: 上一篇Monkey介绍基本搬抄官方介绍,主要是为了自己查阅方便.本文重点介绍我在进行Monkey时如何自动收集相关信息 ...

  9. [Android]官网《UI/Application Exerciser Monkey》中文翻译

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5049041.html 翻译自 Android Develope ...

  10. monkey之monkey简介

    1.Monkey 是什么 Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序 ...

随机推荐

  1. html表单---学习笔记03

    第8章 表单 8.1 表单标记<form> <form name="表单名称" method="提交方法" action="处理程序 ...

  2. Unity3D【新手问题】阴影效果不显示的原因

    Unity 不显示阴影的原因: 模型尺寸太大了,镜头比较远 把模型缩小,镜头一定要拉到最近才能看到 这是我遇到的问题和解决方法, 另外一定要设置 Directional light 的 shadow ...

  3. 驱动04.平台总线驱动模型——点亮LED灯

    1 平台总线的简介 平台总线是一种虚拟的总线,相应的设备则为platform_device,而驱动则为platform_driver.总线将设备和驱动绑定,在系统每注册一个设备的时候,会寻找与之匹配的 ...

  4. ng-class,与ng-click

    要求,后台传过来的数据,要求:(样式)性别为男的,变为灰色.(事件)并且没有点击事件,但女的有 <html> <head> <meta charset="utf ...

  5. (二)Harbor WEB的使用

    接上一篇<安装Harbor>,安装好之后,接下来我们就进行Harbor  web界面的操作吧! 转载请标明出处:http://www.cnblogs.com/huangjc/p/62704 ...

  6. JAVA-代理学习一之JDK实现

    代理的实现依赖于反射,建议不太懂反射的童鞋先看看反射相关的知识点. 代理可以理解为对实际调用方法的一种能力的加强. 代理分为静态代理和动态代理: <1> 静态代理示例 接口MyInterf ...

  7. kmp//呵呵!看毛片算法

    以前刚学的时候迷迷糊糊的,一看就懵圈,前几天捡起来的时候 发现还不会 于是研究了两天,自尊心严重受挫,今天的时候  突然一道灵光迸发,居然 感觉好像懂了,于是又琢磨起来  终于  我懂了  呵呵!   ...

  8. Python连接msyql、redis学习_Day12

    一.数据库 关系型数据库(RDBMS): 1.数据以表格的形式出现2.每行为各种记录名称3.每列为记录名称所对应的数据域4.许多的行和列组成一张表单5.若干的表单组成database 1.MySQL基 ...

  9. CSS继承性+层叠性+盒子+浮动

        CSS继承性+层叠性+盒子+浮动 CSS继承性 <style>         div{             color: pink;             font-siz ...

  10. 使用ab对站点进行压力测试

    测试指令: window下: E:\wamp\bin\apache\Apache2.2.21\bin> .\ab -V  //查看是否按照了ab:(V 大写) E:\wamp\bin\apach ...