一、先说DDMS中的Heap的使用,通过可以观察VM中的Java内存,但是无法查看通过JNI分配的内存。
直接上图,废话少说。。。
图一:将要查看内存使用情况的项目Update heap
图二:操作项目,通过图表可以很直观查看虚拟机的使用内存
二:Android中GC_EXTERNAL_ALLOC的含义(转)
以下内容直接Ctrl C===》Ctrl V
问:
GC_EXTERNAL_ALLOC freed 297K, 49% free 3411K/6663K, external 24870K/26260K, paused 83ms
这里边的每个数字都是什么意思阿?
free 3411K/6663K和external 24870K/26260K,分别都是表示什么的阿?
自问自答:
前面Free的内存是VM中java使用的内存,external是指VM中通过JNI中Native的类中的malloc分配出的内存,例如Bitmap和一些Cursor都是这么分配的。
在Davilk中,给一个程序分配的内存根据机型厂商的不同,而不同,现在的大部分的是32M了,而在VM内部会把这些内存分成java使用的内存和 Native使用的内存,它们之间是不能共享的,就是说当你的Native内存用完了,现在Java又有空闲的内存,这时Native会重新像VM申请,而不是直接使用java的。
例如上边的例子
free 3411K/6663K和external 24870K/26260K
如果这时需要创建一个2M的Bitmap,Native现有内存26260-24870=1390K<2048k,因此他就会向Vm申请内存,虽然java空闲的内存是
6663-3411=3252>2048,但这部分内存Native是不能使用。
但是你现在去申请2M的Native内存,VM会告诉你无法分配的,因为现在已使用的内存已经接近峰值了32M(26260+6663=32923 ),所以现在就会成force close 报OOM。
所以现在我们要检查我们的native内存的使用情况来避免OOM。
总结:通过Heap可以查看到Java使用内存情况,但是无法查看JNI使用内存的情况,所以遇到内存溢出时,项目要是调用到动态库的,就留意一下通过JNI申请的内存是否合理释放。
分享到:
相关推荐
在Android应用程序中触发垃圾回收(GC) 5 监视Adroid应用程序的堆活动 5 终止Android进程 5 使用文件浏览器 6 从模拟器或设备上拷贝文件 6 向模拟器或设备拷贝文件 6 删除模拟器或设备上的文件夹 7 使用模拟器控制 ...
详细介绍了EcliPse安装配置环境 DDMS使用,个人总结教程!
005_android 之DDMS中logcat的使用视频教材,讲解的比较详细,有兴趣的可以学习下哦。
DDMS 的全称是Dalvik Debug Monitor Service,它为我们提供例如:为测试设备截屏,针对特定的进程查看正在运行的线程以及堆信息、Logcat、广播状态信息、模拟电话呼叫、接收SMS、虚拟地理坐标等等。
讲解如何在eclipse中启动DDMS,能够找到数据库文件等相关信息文件
Samsung Galaxy Note3 Eclipse DDMS USB驱动,下载安装即可,重新启动Eclipse,打开DDMS即可发现设备。
华为手机与三星手机的万能--支持eclipse获取DDMS
006__android 之DDMS的使用视频教材,讲解的比较详细,有兴趣的可以学习下哦
1、ddmlib.jar:更换此文件来解决Android studio中的Android Device Monitor(DDMS)的File Explorer不显示目录树的问题。 2、该文件的更换方法:Sdk\tools\lib\monitor-x86_64\configuration\org.eclipse.osgi\...
《Android开发案例驱动教程》 配套代码。 注: 由于第12,13,14章代码太大,无法上传到一个包中。 这三节代码会放到其他压缩包中。 作者:关东升,赵志荣 Java或C++程序员转变成为Android程序员 采用案例驱动模式...
android用户界面设计精髓 android应用程序设计精髓 对外发布你的android应用程序和附录6个部分 附录还包含了android开发常用工具 模拟器 ddms和eclipse 的使用指南 《Android移动应用开发 第3版 卷Ⅱ:提高篇》...
com.android.ide.eclipse.ddms_10.0.1.v201103111512-110841.jar com.android.ide.eclipse.adt_10.0.1.v201103111512-110841.jar 下载可以到:http://download.csdn.net/my 或者http://iask.sina.com.cn/u/ish 把...
Android基础阶段:平台架构特性(JAVA/C) Market/应用程序组件 环境搭建与部署/打包与发布 AVD/DDMS/AAPT 调试与测试 相关资源访问/资源制作 Activity/Service/Broadcast Receiver/Content Provider/原理(生命周期)及...
精讲Android调试及DDMS的使用
附录还包含了Android开发常用工具(模拟器、DDMS和Eclipse)的使用指南。 《Android移动应用开发(第3版)卷Ⅰ:基础篇》卷Ⅰ以及本书的卷Ⅱ,不仅适合Android应用程序开发人员阅读,还能为QA测试人员提供指导。另外,...
android中的DDMS视图&Button;.ppt
开发人员可以通过DDMS看到目标机器上运行的进程/现成状态,可以 android的屏幕到开发机上,可以看进程的heap信息,可以查看logcat信息,可以查看进程分配内存情况,可以像目标机发送短信以及打电话,可 以像android...
运行HelloAndroid项目 调试HelloAndroid项目,首先将Eclipse开辟工具的工作界面切换到DDMS: 实验过程中发现的问题以及处理问题的方法 在装置Android SDK的时候,遇到信息"Failed to fetch URL…"的错误提示,然后...
[Android开发从零开始].6.DDMS视图和Button
android用户界面设计精髓 android应用程序设计精髓 对外发布你的android应用程序和附录6个部分 附录还包含了android开发常用工具 模拟器 ddms和eclipse 的使用指南 《Android移动应用开发 第3版 卷Ⅱ:提高篇》涵盖...