【转】android IDE——通过DDMS查看app运行时所占内存情况
在Android内存优化方面,我们不可能做到没有大内存的占用情况。
所以有时候要清楚我们的app到底占用了多少内存,哪一步操作占用了多少的内存。
这时候,android的ddms中提供了一个工具,是可是实时查看app运行时的内存使用情况。
下面我以android studio为例。其实eclipse adt 是一样的。
eclipse中也是这个图标。
如何使用,图中已经表明的很清楚了。
1,找到当前运行的手机
2,点击和你app相同包名的进程
3,点击update Heap
4,切换到Heap视图上点击Cause GC按钮
5,根据自己需要点击app进程
6,图中的柱状图就是你的app的内存使用情况了
我们可以根据哪一步操作对内存的使用情况而锁定应该优化的地方。
注意事项:
1,Cause GC按钮点击一次就相当于虚拟机请求了一次gc操作
2,当内存信息显示后就不需要再点击Cause GC按钮了。Heap视图会定时刷新,对应的操作过程可以看出内存变化。
如何知道程序内存泄漏?
Heap视图中有一行数据是叫data object,即数据对象。它是我们app中大量存在的类类型的对象。
在data object中有一列 Total Size ,它的值就是当前进程中所有Java对象的内存总量。
一般情况下,这个值决定是否内存泄漏。
如何判断?
1,不断的操作你的app,同时观察Total Size的值。
2,Total Size的值一般会稳定在一个正常范围内。
3,当我们在不断操作app的时候,内存会有一个先增加(不断的生成对象),后下降(对象被回收)。如果程序的代码处理良好,那么内存占用量会有一个明显的回落,并且稳定在一个正常水平。
4,如果你的代码没有很好的释放内存。那么,内存占用量就没有一个明显的回落,并且会越来越高,最终达到上限程序被kill掉。
如何处理?
当我们发现内存泄漏了,我们需要怎么做?
一般情况下,我们对自己写的代码了如指掌,可以根据逻辑去判断,当前操作是哪里造成了内存泄漏。然后分析,修改。
但是,如果你在修改别人的代码的时候,这样会把你逼疯的。这里介绍一个工具:内存分析工具MAT(Memory Analyzer Tool),在eclipse中能够当作插件使用。android studio目前我还没试过。不过有客户端。
下载地址和使用详情见:www.eclipse.org/mat
from:http://blog.csdn.net/yehui928186846/article/details/51387079
【转】android IDE——通过DDMS查看app运行时所占内存情况的更多相关文章
- 查看JVM运行时参数
1.查看JVM运行时参数 -XX:+PrintFlagsInitial -XX:PrintFlagsFinal -XX:+UnlockExperimentalVMOptions 解锁实验参数 -XX: ...
- 查看JVM运行时堆内存
利用jmap和MAT等工具查看JVM运行时堆内存 https://www.cnblogs.com/cjsblog/p/9561375.html jmap JDK自带了一些工具可以帮助我们查看JVM运行 ...
- JVM探秘:jinfo查看JVM运行时参数
本系列笔记主要基于<深入理解Java虚拟机:JVM高级特性与最佳实践 第2版>,是这本书的读书笔记. 如何查看JVM运行时参数,对于线上JVM调优是很关键的,因为只有知道了当前使用的JVM ...
- Ansible 脚本运行一次后,再次运行时出现报错情况,原因:ansible script 的格式不对,应改成Unix编码
Ansible 脚本运行一次后,再次运行时出现报错情况,原因:ansible script 的格式不对,应改成Unix编码 find . -name "*" | xargs do ...
- android: DOC命令:查看后台运行的activity:
DOC命令:查看后台运行的activity: adb shell dumpsys activity running activity: 模拟器曾经运行过的 activity:
- Android ADT插件更新后程序运行时抛出java.lang.VerifyError异常解决办法
当我把Eclipse中的 Android ADT插件从21.1.0更新到22.0.1之后,安装后运行程序抛出java.lang.VerifyError异常. 经过调查,终于找到了一个有效的解决办法: ...
- 关于android源码中的APP编译时引用隐藏的API出现的问题
今天在编译android源码中的计算器APP时发现,竟然无法使用系统隐藏的API,比如android.os.ServiceManager中的API,引用这个类时提示错误,记忆中在android源码中的 ...
- 利用jmap和MAT等工具查看JVM运行时堆内存
jmap JDK自带了一些工具可以帮助我们查看JVM运行的堆内存情况,常用的是jmap命令 jmap -heap <pid> 打印堆的使用情况 那么,从这个输出中我们也可以大致看出堆的结构 ...
- Unity运行时检测Altas使用情况
UI贴图在游戏中内存大小中占的分量非常非常大,尤其对于前期对UI没有规划的项目,无论是包量还是内存大小都是需要花费很多时间去优化.如果涉及到战斗场景和逻辑场景的情况下,常用的做法就是把两个场景使用的a ...
随机推荐
- POJ 3268 Silver Cow Party(Dijkstra算法求解来回最短路问题)
题目链接: https://vjudge.net/problem/POJ-3268 One cow from each of N farms (1 ≤ N ≤ 1000) conveniently n ...
- Python3.7 数字之间下划线
只是为了提高可读性,数值没变. >>> yes_votes = 42_572_6540 ; >>> yes_votes = 42_572_654099 ; > ...
- PowerDesigner 修改Name ,Code 不变
tools-> General Options-> Dialog:Operation Modes: 去掉 NameToCodeMirroring 前面的√
- ELK日志分析平台系统CentOS7环境搭建和基本使用
一.搭建环境 系统环境:CentOS7 安装iptables:https://blog.csdn.net/momo_mutou/article/details/81739155 jdk1.8: ht ...
- 关于git的一个错误提示
一般clone仓库后如果,remote -v或者add出现如下的错误的话: Not a git repository (or any of the parent directories): .git需 ...
- POJ 1113 Wall(思维 计算几何 数学)
题意 题目链接 给出平面上n个点的坐标.你需要建一个围墙,把所有的点围在里面,且围墙距所有点的距离不小于l.求围墙的最小长度. \(n \leqslant 10^5\) Sol 首先考虑如果没有l的限 ...
- React中使用百度地图API
今天我们来搞一搞如何在React中使用百度地图API好吧,最近忙的头皮发麻,感觉身体被掏空,所以很久都没来写博客了,但今天我一定要来一篇好吧 话不多说,我们直接开始好吧 特别注意:该React项目是用 ...
- instanceof和typeof的细节
我骑着小毛驴,喝着大红牛哇,哩个啷格里格朗,别问我为什么这木开心,如果活着不是为了浪荡那将毫无意义 今天来捋一捋我们平日经常用的instanceof和typeof的一些小问题 typeof: type ...
- python之MRO和C3算法
python2类和python3类的区别pyhon2中才分新式类与经典类,python3中统一都是新式类Python 2.x中默认都是经典类,只有显式继承了object才是新式类python 3.x中 ...
- ionic3 细节注意
一.图标和splash大小不一样 icon图标的大小尽量为1024*1024,并且不能为圆角. splash图片的大小尽量为2732*2732,ionic1的大小为2208*2208