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运行时所占内存情况的更多相关文章

  1. 查看JVM运行时参数

    1.查看JVM运行时参数 -XX:+PrintFlagsInitial -XX:PrintFlagsFinal -XX:+UnlockExperimentalVMOptions 解锁实验参数 -XX: ...

  2. 查看JVM运行时堆内存

    利用jmap和MAT等工具查看JVM运行时堆内存 https://www.cnblogs.com/cjsblog/p/9561375.html jmap JDK自带了一些工具可以帮助我们查看JVM运行 ...

  3. JVM探秘:jinfo查看JVM运行时参数

    本系列笔记主要基于<深入理解Java虚拟机:JVM高级特性与最佳实践 第2版>,是这本书的读书笔记. 如何查看JVM运行时参数,对于线上JVM调优是很关键的,因为只有知道了当前使用的JVM ...

  4. Ansible 脚本运行一次后,再次运行时出现报错情况,原因:ansible script 的格式不对,应改成Unix编码

    Ansible 脚本运行一次后,再次运行时出现报错情况,原因:ansible  script 的格式不对,应改成Unix编码 find . -name "*" | xargs do ...

  5. android: DOC命令:查看后台运行的activity:

    DOC命令:查看后台运行的activity: adb shell dumpsys activity running activity: 模拟器曾经运行过的 activity:

  6. Android ADT插件更新后程序运行时抛出java.lang.VerifyError异常解决办法

    当我把Eclipse中的 Android ADT插件从21.1.0更新到22.0.1之后,安装后运行程序抛出java.lang.VerifyError异常. 经过调查,终于找到了一个有效的解决办法: ...

  7. 关于android源码中的APP编译时引用隐藏的API出现的问题

    今天在编译android源码中的计算器APP时发现,竟然无法使用系统隐藏的API,比如android.os.ServiceManager中的API,引用这个类时提示错误,记忆中在android源码中的 ...

  8. 利用jmap和MAT等工具查看JVM运行时堆内存

    jmap JDK自带了一些工具可以帮助我们查看JVM运行的堆内存情况,常用的是jmap命令 jmap -heap <pid> 打印堆的使用情况 那么,从这个输出中我们也可以大致看出堆的结构 ...

  9. Unity运行时检测Altas使用情况

    UI贴图在游戏中内存大小中占的分量非常非常大,尤其对于前期对UI没有规划的项目,无论是包量还是内存大小都是需要花费很多时间去优化.如果涉及到战斗场景和逻辑场景的情况下,常用的做法就是把两个场景使用的a ...

随机推荐

  1. [总结] LCT学习笔记

    \(emmm\)学\(lct\)有几天了,大概整理一下这东西的题单吧 (部分参考flashhu的博客) 基础操作 [洛谷P1501Tree II] 题意 给定一棵树,要求支持 链加,删边加边,链乘,询 ...

  2. razor视图使用三元表达式

    根据条件是否满足给input标签添加属性. <input type="radio" value="1" name="PortType" ...

  3. Aspose.Cells API 中文版文档 下载

    链接: https://pan.baidu.com/s/19foJyWgPYvA7eIqEHJ_IdA 密码: yxun

  4. 百度地图坐标偏移,微信小程序地图偏移问题,腾讯地图坐标偏移

    解决方案: 如果用百度的地图获取的坐标点,在微信小程序内使用,就会出现偏移 算法(lat和lng是经纬度,球面坐标): To_B是转到百度,To_G是转到GCJ-02(谷歌,高德,腾讯) var TO ...

  5. windows使用笔记-google-chrome下载地址

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! google-chrome下载地址:https://www.google.cn/intl/zh-CN/chrome/

  6. 试议常用Javascript 类库中 throttle 与 debounce 辅助函数的区别

    问题的引出 看过我前面两篇博客的童鞋可能会注意到都谈到了事件处理的优化问题. 在很多应用中,我们需要控制函数执行的频率, 例如 窗口的 resize,窗口的 scroll 等操作,事件触发的频率非常高 ...

  7. 【读书笔记】iOS-流式音频与Pandora Radio之路

    复杂性是不可避免的,而且只会随时间增长,所以在增加特性时一定要为重构和代码简化留出时间.真正遇到问题这前先不要担心性能.iPhone非常强壮,你可能永远也不会遇到预想的性能问题. 能过互联网向一个设备 ...

  8. 从零开始学习html(二)认识标签(第一部分)——上

    一.语义化,让你的网页更好的被搜索引擎理 学习html标签过程中,主要注意两个方面的学习:标签的用途.标签在浏览器中的默认样式. 标签的用途:我们学习网页制作时,常常会听到一个词,语义化. 那么什么叫 ...

  9. 快捷键整理(来源:http://www.cnblogs.com/xing901022/p/4741630.htm)

    Eclipse 跳转到指定行:ctrl+l 1几个最重要的快捷键 代码助手:Ctrl+Space(简体中文操作系统是Alt+/)快速修正:Ctrl+1单词补全:Alt+/打开外部Java文档:Shif ...

  10. Fiddler 使用fiddler发送捕获的请求及模拟服务器返回

    使用fiddler发送捕获的请求及模拟服务器返回 by:授客 QQ:1033553122 1.做好相关监听及代理设置 略 2.发送捕获的请求 如图 3.模拟服务器返回 本例的一个目的是,根据服务器返回 ...