Android内存泄露测试
Android性能测试过程中的一些常用命令:
CPU:
adb shell top -n | grep "+PackageName
内存:
adb shell dumpsys meminfo "+PackageName
流量:
adb shell cat /proc/Pid/net/dev
电量:
adb shell dumpsys battery
列出所有包名:
adb shell ps
关于android性能测试,这里有系列文章,写的比较完善,可以参考:https://testerhome.com/wiki/androidperformancebytestly
~~~~~~~~~~~~~~~~~~
Android下,如何进行内存泄露的测试,除了长时间运行的间接测试,有没有工具帮助我们进行这方面测试呢?(下文参考:http://blog.csdn.net/amy0428/article/details/7057282)
首先,安装 MAT
和其他插件的安装非常类似,MAT 支持两种安装方式,一种是“单机版“的,也就是说用户不必安装 Eclipse IDE 环境,MAT 作为一个独立的 Eclipse RCP 应用运行;另一种是”集成版“的,也就是说 MAT 也可以作为 Eclipse IDE 的一部分,和现有的开发平台集成。
网上都是Eclipse中,点击Help,install new software,work with中输入网址,记得点击Add,Next,Next即可。
如果不行,也不要担心,下载下来自己装,链接如下:
(下载地址:www.eclipse.org/downloads/download.php?file=/mat/1.1.1/MemoryAnalyzer-1.1.1.201108240735.zip )
http://www.eclipse.org/downloads/download.php?file=/mat/1.1.1/MemoryAnalyzer-1.1.1.201108240735.zip
install new software,Achieve中输入刚下载下的zip文件,Next,Nex安装搞定。
其次,配置环境参数
安装完成之后,为了更有效率的使用 MAT,需要做一些配置工作。因为通常而言,分析一个堆转储文件需要消耗很多的堆空间,为了保证分析的效率和性能,在有条件的情况下,我们会建议分配给 MAT 尽可能多的内存资源。你可以采用如下两种方式来分配内存更多的内存资源给 MAT。
一种是修改启动参数 MemoryAnalyzer.exe -vmargs -Xmx4g
另一种是编辑文件 MemoryAnalyzer.ini,在里面添加类似信息 -vmargs – Xmx4g。生成.hprof文件:在Eclipse中的DDMS中选择要测试的进程,然后点击Update Heap 和Dump HPROF file两个Button。
.hprof 文件会自动保存在电脑上,把 .hprof 文件拷贝到PC上的\ android-sdk-windows\tools目录下。这个由DDMS生成的文件不能直接在MAT打开,需要转换。
运行cmd打开命令行,cd到\ android-sdk-windows\tools所在目录,并输入命令hprof-conv xxxxx.hprof yyyyy.hprof,其中xxxxx.hprof为原始文件,yyyyy.hprof为转换过后的文件。转换过后的文件自动放在android- sdk-windows\tools 目录下。
OK,到此为止,.hprof文件处理完毕,可以用来分析内存泄露情况了。 打开MAT:
在Eclipse中点击Windows→Open Perspective→Other→Memory Analysis 导入.hprof文件
在MAT中点击 File→Open File,浏览到刚刚转换而得到的.hprof文件,并Cancel掉自动生成报告,点击Dominator Tree,并按Package分组,选择自己所定义的Package 类点右键,在弹出菜单中选择List objects→With incoming references。
这时会列出所有可疑类,右键点击某一项,并选择Path to GC Roots→exclude weak/soft references,会进一步筛选出跟程序相关的所有有内存泄露的类。据此,可以追踪到代码中的某一个产生泄露的类。因为此处会把所有可疑地方都罗列出 来,需要RD进一步分析确定。
Android内存泄露测试的更多相关文章
- Android 内存泄露测试数据处理--procrank,setprop,getprop(转)
1.Android内存测试常用的几个概念. VSS--virtual set size 虚拟耗用内存(包含共享库占用的内存)RSS--Resident set size实际使用的物理内存(包含共享库占 ...
- android 内存泄露测试
Android 程序由java语言编写,android的内存管理与java相似,通过new为对象分配内存,所有对象在java堆内分配空间,对象回收有个垃圾回收器来完成.GC就是垃圾收集的意思(Gaba ...
- 移动端测试===Android内存泄露和GC机制(转)
本文转自:https://www.testwo.com/article/1153 1.前言 Hello,小伙伴们,相信大家在项目测试中都遇到过内存泄露问题,小编也着实爬过很多坑.比如小编所测项目,更换 ...
- (转)专项:Android 内存泄露实践分析
今天看到一篇关于Android 内存泄露实践分析的文章,感觉不错,讲的还算详细,mark到这里. 原文发表于:Testerhome: 作者:ycwdaaaa ; 原文链接:https://teste ...
- android内存泄露调试,Heap,MAT
三.内存监测工具 DDMS --> Heap 无论怎么小心,想完全避免bad code是不可能的,此时就需要一些工具来帮助我们检查代码中是否存在会造成内存泄漏的地方.Android tools中 ...
- android 内存泄露之jni local reference table overflow (max=512)
在android项目中要实现一个需求 为了性能的要求只能用c代码来实现功能. 这样就牺牲了java跨平台性. 通过加载.so的方式,把用c实现的模块集成到app中. android提供jni层,作为一 ...
- 【android内存泄露】 WebView篇
在咱的博客园app里,新闻的内容使用WebView展示的.在测试中,咱重复进入.退出某个新闻10多次,观察到 Objects一直在不断增长,反复触发GC,但是一直回收不了,占用的内存越来越高,于是警觉 ...
- Android内存泄露自动检测神器LeakCanary
经典的面试题: a.怎样在coding过程中避免内存泄露? b.怎样检测内存泄露? 这两个问题我想大部分Android 职位面试时都会被问到吧. 怎样避免就不赘述了,网上很多答案. 工具呢,当然也有很 ...
- Android内存泄露调试
Android 内存泄漏调试 一.概述 如果我们编写的代码当中有太多的对内存使用不当的地方,难免会使得我们的设备运行缓慢,甚至是死机.为了能够使得 Android 应用程序安全且快速的运行, Andr ...
随机推荐
- linux内核参数优化
net.ipv4.ip_forward = 0net.ipv4.conf.default.rp_filter = 1net.ipv4.conf.default.accept_source_route ...
- Java中的TreeMap、Comparable、Comparator
我们知道HashMap的存储位置是按照key这个对象的hashCode来存放的,而TreeMap则是不是按照hashCode来存放,他是按照实现的Comparable接口的compareTo这个方法来 ...
- Hibernate,JPA注解@OneToOne_JoinColumn
一对一(One-to-one),外键关联 用例代码如下: 数据库DDL语句 1,CAT表 create table CAT ( id CHAR) not null, create_time ), up ...
- iOS 开发 证书总结 开发证书和生产证书的区别
IOS开发 证书总结 开发者证书 ------>> 开发证书是你在真机推送时 用得, 生产证书是app 上架之后 推送给用户用的 首先你必须获得apple开发者证书,上图这个文件就是 ...
- js instanceof运算符
a instanceof B; instanceof检测对象a的原型链中有没有构造函数B.prototype 如下: function In (a, B) { var p = a.__proto__; ...
- C++Lua配置
1.先从lua官网下载lua新版本http://www.lua.org/,我这里以lua-5.3.0.tar.gz为例,大小不到300kb 2.解压后出现如下图 3.在vs2013新建工程静态库类型( ...
- bianwu 哈希表输出到 excel
一.输出到excel 函数: protected void InputFileTheme(object[] Header,object [] DataFileds,string sql,string ...
- [Ogre][地形]OgreTerrain分析以及使用
Ogre 1.7.2中的地形教程 ○读者可以对照着Ogre1.7.2中的terrain.h源码进行阅读加深理解,蓝色部分均为源码 ○去除了一些具体场景比如添加mesh,设置setAmbientLigh ...
- easyui datebox 只选择年月
//将日期输入框变为年月的函数方法 var month=0; $('#effectiveDate').datebox({ onShowPanel: function () ...
- poj2888 Magic Bracelet
给你一个正n(<10^9)边形和m(<10)种色料,要求给正n边形顶点染色并且规定k组颜色对不能相邻, 输入保证n与mod互质,计数染色总方案数(绕图形中心旋转后相同的方案算一种)对mod ...