博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转】android IDE——通过DDMS查看app运行时所占内存情况
阅读量:6986 次
发布时间:2019-06-27

本文共 1061 字,大约阅读时间需要 3 分钟。

在内存优化方面,我们不可能做到没有大内存的占用情况。

所以有时候要清楚我们的app到底占用了多少内存,哪一步操作占用了多少的内存。

这时候,的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 ,它的值就是当前进程中所有对象的内存总量。 
一般情况下,这个值决定是否内存泄漏。

如何判断? 

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

你可能感兴趣的文章
zabbix配置邮箱报警
查看>>
使用ulimit设置文件最大打开数
查看>>
[Step By Step]SAP HANA PAL指数回归预测分析Exponential Regression编程实例EXPREGRESSION(模型)...
查看>>
VMware Data Recovery备份恢复vmware虚拟机
查看>>
solr多core的处理
查看>>
解决DeferredResult 使用 @ResponseBody 注解返回中文乱码
查看>>
C# WinForm开发系列 - TextBox
查看>>
28岁少帅统领旷视南京研究院,LAMDA魏秀参专访
查看>>
java文件传输
查看>>
Xen虚拟机迁移技术
查看>>
安装Sql Server 2005出现“性能监视器计数器要求”错误解决方法。
查看>>
[.NET领域驱动设计实战系列]专题八:DDD案例:网上书店分布式消息队列和分布式缓存的实现...
查看>>
Icomparer和Icomparable集合排序
查看>>
【poi xlsx报错】使用POI创建xlsx无法打开
查看>>
UNIX环境高级编程笔记之文件I/O
查看>>
DIV+CSS规范命名
查看>>
我的2013 Q.E.D
查看>>
2017 Multi-University Training Contest - Team 9 1002&&HDU 6162 Ch’s gift【树链部分+线段树】...
查看>>
4.5. Rspamd
查看>>
ArcMap中的名称冲突问题
查看>>