问题描述:
int width = bitmap.getwidth();
int height = bitmap.getHeight();
int[] srcpixles = new int[width * height];  //存放bitmap默认的颜色值 
int[] desPixels = new int[width * height];  //存储修改后的颜色值bitmap.getPixles(srcPixels .....)   //获取颜色值,保存在srcPixels中//修改方法
change(srcPixels,  desPixels)  //该方法会对象素值进行一些操作bitmap.setPixels(desPixels....)  //使用修改后的颜色值填充新的bitmap这个过程会带来一些问题,非常的占用内存;android 每个进程一开始有5M的空间,上面的两个int数组srcPixles desPixels
如果图片宽高为1024*768的话, 这2个数组就要吃掉将近6M的内存,此时VM肯定会申请更多的内存
这时通过DDMS观察到总内存快将近10M的空间,这时候还没有任何问题,但是我切换到别的activity,这时对两个数组置空,bitmap.recycle()操作
这时,我再打开这个图片处理的activity(依然使用同一张图片), 这时候就会抛出OOM异常
这时候总内存已经将近10M的空间,为什么还会抛出OOM,而且第一次退出这个activity时,在DDMS-Heap-type中观察到int[] 数组这栏的内存已经被释放掉了