我用这个createScaleBitmap方法创建缩略图,将生成的图片放入缓存(自定义一个类,CacheManager,里面用一个若引用引用到一个bitmap的集合,限定了这个集合大小每次往里存的时候判断如果超出大小就先remove一个,然后再往里存一个),为嘛还会有内存溢出的情况,虽然几率不是很大,是不是remove以后它没有立马给我从内存释放掉吗,谁有好的解决办法呢
[code="java"]
你这样remove集合是没用的
你remove只是集合清空了···
Android上的Bitmap对象销毁,可以借助recycle()方法显示让GC回收一个Bitmap对象,通常对一个不用的Bitmap可以使用下面的方式,如
Java代码
if(bitmapObject.isRecycled()==false) //如果没有回收
bitmapObject.recycle();
if(bitmapObject.isRecycled()==false) //如果没有回收 bitmapObject.recycle();
[/code]
使用WeakReferenceHashMap的时候,虽然每次插入数据前,你做了判断,但是并不能保证在你修改了某个图片内容后,它能消除对象的引用。即使能够消除在WeakReferenceHashMap中的对象应用,也不能保证GC立即进行垃圾回收,依靠remove方法是不能解决OOM问题的,考虑一下为什么需要缓存BitMap类型集合,是否可以采取其它方式提高效率
将REMOVE后的对像手动设置 为NULL