eclipse ddms视图
来源:互联网 发布:淘宝网天猫女中筒靴 编辑:程序博客网 时间:2024/05/17 05:12
原文地址:http://blog.csdn.net/dinglin_87/article/details/8011999
一、先说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申请的内存是否合理释放。
- eclipse ddms视图
- DDMS视图
- eclipse DDMS
- DDMS视图和Button
- Android入门:DDMS视图
- Android 开发中eclipse 下 DDMS 视图中 sdcard 中文件导入的处理
- Android 开发中eclipse 下 DDMS 视图中 sdcard 中文件导入的处理
- Android 开发中eclipse 下 DDMS 视图中 sdcard 中文件导入的处理
- eclipse 没有DDMS
- Eclipse中DDMS常用工具
- 给电脑插入安卓手机那么在eclipse的DDMS视图里的Devices没设备信息
- Eclipse打开DDMS无响应
- Eclipse 用法、快捷键;Android DDMS
- Eclipse android DDMS线程更新
- eclipse DDMS功能无法使用
- eclipse + DDMS 分析APPUI元素
- Eclipse 中DDMS报错
- Android开发学习笔记:浅谈DDMS视图
- libGL,fbconfigs,swarst等Bug问题-libGL error:No matching fbConfigs or visuals found
- 小天开始学java
- java nio 使用内存映射文件实现进程间通信
- scala下使用akka计算pi
- Android关于ListView中使用EditText获取输入数据和刷新ListView数据的解决方案
- eclipse ddms视图
- UVa 712 - S-Trees
- Android四大基本组件(3)之四大组件总结
- ABAP模块-SQL取数优化第二篇
- Android JNI 高级篇
- 自学perl笔记1_在windows上运行perl程序
- 基于Notes on Convolutional Neural Networks的卷积神经网络反向求导的理解
- 蓝桥杯之FBI树问题
- DFS:多米诺骨牌游戏