开发图片视频应用常遇到这个错误。


android
内存由 dalvik 和 native 2部分组成。dalvik 也就是 java 堆,创建的对象就是在这里分配的,


native 是通过 c/c++ 方式申请的内存。

Bitmap
就是以一种方式分配的(android3.0 以后,系统默认是通过 dalvik 分配的)。当然不管以何种方式分

配,2部分加起来不能超过
android 对单个程序的内存限制。



1.一个进程的内存能够由2个部分组成:java 使用内存 ,C 使用内存
,这两个内存的和必须小于16M。不然就会出现大

家熟悉的OOM,这个就是第一种OOM的情况。

2.更加奇怪的是这个:一旦内存分配给Java后。以后这块内存即使释放后。也仅仅能给Java的使用,这个预计跟java虚拟

机里把内存分成好几块进行缓存的原因有关,反正C就别想用到这块的内存了。所以假设Java突然占用了一个大块内

存,即使非常快释放了:

C能使用的内存 = 16M - Java某一瞬间占用的最大内存。


而Bitmap的生成是通过malloc进行内存分配的,占用的是C的内存,MBitmap无法生成的原

因。由于Java用的内存太多,剩下C能用的内存太少了。

王立平--android out of memory(OOM)产生原因的更多相关文章

  1. 王立平--android中的anim(动画)

    简单有用步骤: 1.新建anim目录. 2.在anim下新建xml文件, 3.在xml下编写自己须要动画. 简单样例: 给Imageview加入动画 public class MainActivity ...

  2. 王立平--android发育,转让eclipse可选颜色

    android:background="@android:color/white" 版权声明:本文博主原创文章.博客,未经同意不得转载.

  3. 王立平--android特权

    //同意应用程序访问和更改checkin数据库"properties"数据表 android.permission.ACCESS_CHECKIN_PROPERTIES //同意应用 ...

  4. 王立平-- android:layout_weight

    效果: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzQyNTUyNw==/font/5a6L5L2T/fontsize/400/fill/I0 ...

  5. 王立平--android这四个组成部分

    Android中称为四大组件的为别为:Activity/Service/BroadCast Recevicer/Content  provider Activity:activity是用户和应用程序交 ...

  6. 王立平-Android中对图像进行Base64编码

    // ------------------base64-------------------// public String bitmaptoString(Bitmap bitmap) { // 将B ...

  7. 王立平--android事件监听的3种方式

    第一种通常在activity组件的oncreate事件中直接定义,直接动作. 这样的方式每一个控件都定义一次.通常不方便. Button btn = (Button) findViewById(R.i ...

  8. 王立平--TableLayout

    效果: <?xml version="1.0" encoding="utf-8"?>  <TableLayout xmlns:android= ...

  9. Google Developing for Android 二 - Memory 最佳实践 // lightSky‘Blog

    Google Developing for Android 二 - Memory 最佳实践   |   分类于 Android最佳实践 原文:Developing for Android, II Th ...

随机推荐

  1. C++ 静态成员的类内初始化

    一般来说,关于C++类静态成员的初始化,并不会让人感到难以理解,但是提到C++ 静态成员的"类内初始化"那就容易迷糊了. 我们来看如下代码: //example.h #includ ...

  2. Hadoop体系所有组件默认端口列表

    Why? Hadoop集群组件太多,默认端口无法记住,有事后需要查看,就在这里罗列下这里包含我们使用到的组件:HDFS, YARN, Hbase, Hive, ZooKeeper。 What? 端口 ...

  3. hibernate的各个jar包的作用

    hibernate的各个jar包的作用 最基本的Hibernate3.3.2之 JAR包(必要): 包名 位置 用途 hibernate3.jar /hibernate 核心JAR包 antlr.ja ...

  4. Memcache缓存用好了,性能有了很大的提高

    web服务器1 web服务器2 web服务器3如果每台web服务器都向mysql服务器表插入信息并且要做出相应最新编号反馈出现这样的高并发时候怎么减少服务器压力,同时用户体验还要好 可以使用Memca ...

  5. PE笔记之NT头PE扩展头

    typedef struct _IMAGE_OPTIONAL_HEADER {       //       // Standard fields.       //       WORD    Ma ...

  6. 基于c语言中调试工具的用法汇总(不包含gdb)【转】

    转自:http://www.jb51.net/article/36829.htm 是不是只有编译的时候才知道程序写了错误?有没有在未编译的时候就让机器帮你检查错误的工具呢? 答案是:有!! splin ...

  7. 2014年国内最热门的.NET开源平台

    http://developer.51cto.com/art/201501/464292.htm

  8. Windows下Mysql数据库服务的关闭和重启

    有时我们在手动修改了Mysql的配置文件之后,我们要重启Mysql服务才能使之生效,这里提供几种重启方法: 1.windows下重新启动mysql5的方法:在安装mysql时系统会添加服务,可以通过管 ...

  9. 2018 Multi-University Training Contest 7

    GuGuFishtion dls真厉害,快速求$\sum_{a=1}^n \sum_{b=1}^m gcd(a,b) $的个数,我想的方法是根据上节课dls讲的方法,要容过来容过去,这次不用了. 则$ ...

  10. 站点部署,IIS配置优化指南

    目录 一. 二. 三. 四. 五. 六. 七.       安全性 八.       多服务器IIS集中化管理web 通常把站点发布到IIS上运行正常后,很少会去考虑IIS提供的各种参数,如何配置才是 ...