Android中GC_EXTERNAL_ALLOC的含义小结
来源:互联网 发布:淘宝app怎么看评价 编辑:程序博客网 时间:2024/05/16 03:23
经常在调试代码的时候,看到GC_EXTERNAL_ALLOC信息。
比如:GC_EXTERNAL_ALLOC freed 297K, 49% free 3411K/6663K, external 24870K/26260K, paused 83ms
这里边的每个数字都是什么意思阿?
1。其中free 3411K/6663K和external 24870K/26260K,分别都是表示什么?
1)前面Free的内存是VM中java使用的内存;
2)external是指VM中通过JNI中Native的类中的malloc分配出的内存。
2.例如:Bitmap和一些Cursor都是这么分配的。
1)在Davilk中,给一个程序分配的内存根据机型厂商的不同而不同,以前大部分内存是32M了。
2)而在VM内部会把这些内存分成java使用的内存和 Native使用的内存,它们之间是不能共享的。
3)就是说当你的Native内存用完了,现在Java又有空闲的内存,这时Native会重新像VM申请,而不是直接使用java的。
3.例如上边的例子:
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。
- Android中GC_EXTERNAL_ALLOC的含义小结
- GC_EXTERNAL_ALLOC的含义
- Android开发Eclipse中DDMS中Heap使用及GC_EXTERNAL_ALLOC含义
- Android开发Eclipse中DDMS中Heap使用及GC_EXTERNAL_ALLOC含义
- Android开发Eclipse中DDMS中Heap使用及GC_EXTERNAL_ALLOC含义
- Android开发Eclipse中DDMS中Heap使用及GC_EXTERNAL_ALLOC含义
- Android开发Eclipse中DDMS中Heap使用及GC_EXTERNAL_ALLOC含义
- Android开发Eclipse中DDMS中Heap使用及GC_EXTERNAL_ALLOC含义 分类: android Eclipse 内存管理 2012-09-24 11:05 1214人阅读
- Heap使用及GC_EXTERNAL_ALLOC含义
- Heap使用及GC_EXTERNAL_ALLOC含义
- android GC_CONCURRENT and GC_EXTERNAL_ALLOC
- GC_EXTERNAL_ALLOC
- Android中GC_FOR_MALLOC的含义
- Android中Context的含义
- 有关Android APK安装不了的问题—— GC_EXTERNAL_ALLOC freed 与 GC_EXPLICIT freed
- IntentFilter 中 的android:priority 的含义
- Android中RelativeLayout各个属性的含义
- Android中RelativeLayout各个属性的含义
- 一个毕业五年的女程序员的工作经历上
- SecureCRT(Linux平台)中的一些实用/有趣用法
- Javascript URL 编码区别及转义字符处理
- 修改PATH导致进不去系统 解决方案
- Android从程序员到架构师之路-高焕堂
- Android中GC_EXTERNAL_ALLOC的含义小结
- 第十九章 调试——断点
- stringstream
- 免费的录屏软件
- char *p 与char p[] 比较
- 40种网站设计常用技巧.doc
- 南阳 305 表达式求值
- rsync配置
- 去掉excel的“此工作簿包含到其他数据源的链接”提示