android java内存与native内存
来源:互联网 发布:修改 linux sftp端口 编辑:程序博客网 时间:2024/06/15 11:35
http://www.360doc.com/content/12/0204/19/3700464_184166074.shtml
GC_EXTERNAL_ALLOC freed 与 GC_EXPLICIT freed 是什么?
09-28 17:16:37.543: DEBUG/dalvikvm(21466): GC_EXTERNAL_ALLOC freed 390 objects / 45656 bytes in 50ms
09-28 17:16:40.513: DEBUG/dalvikvm(3267): GC_EXPLICIT freed 4501 objects / 251624 bytes in 67ms
很多做开发的朋友不明白上面这句是什么意思,给大家解释一下!
前面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。
- android java内存与native内存
- android java内存与native内存
- Android开发Bitmap在Native层与Java层内存的两种生成方式
- Android开发Bitmap在Native层与Java层内存的两种生成方式
- Android内存共享 Java层内存共享 Native层内存共享
- Android Native内存泄漏诊断
- Android Valgring检测Native内存泄漏
- Android 分析应用程序占用native内存
- Android 分析应用程序占用native内存
- Android Native进程内存泄露检测
- Android Native进程内存泄露检测
- Android Valgring检测Native内存泄漏
- react native 常驻内存(android)
- android native 代码内存泄露 定位方案
- 关于Android的Native内存和Dalvik内存
- 使用DDMS中的native heap检查Android native内存泄露
- Android图片与内存
- Android 内存与性能
- fadeIn跟fadeOut实现动态
- PAT--1110. Complete Binary Tree
- 使用纯C语言通过Direct3D 11的Compute Shader做通用目的计算
- fadeTo使逐渐透明
- 最简单解决c#在UI线程中执行耗时方法导致界面假死的方法
- android java内存与native内存
- Yii框架下的增删改查
- Android Service Framework
- slideup跟slideDown改变高度实现动态
- 如何选择一家公司?
- strtol函数简单使用
- 数据结构上机测试4.1:二叉树的遍历与应用1
- C++空类编译器自动生成的6个成员函数
- 有一组数字,有两个数字只出现一次,其他数字都是成对出现的,请找出这个数字。