weixin_42496857
2012-01-06 12:46
浏览 453
已采纳

android Bitmap.createScaleBitmap() 内存溢出

我用这个createScaleBitmap方法创建缩略图,将生成的图片放入缓存(自定义一个类,CacheManager,里面用一个若引用引用到一个bitmap的集合,限定了这个集合大小每次往里存的时候判断如果超出大小就先remove一个,然后再往里存一个),为嘛还会有内存溢出的情况,虽然几率不是很大,是不是remove以后它没有立马给我从内存释放掉吗,谁有好的解决办法呢

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • renpeng301 2012-01-06 13:22
    已采纳

    [code="java"]
    你这样remove集合是没用的
    你remove只是集合清空了···
    Android上的Bitmap对象销毁,可以借助recycle()方法显示让GC回收一个Bitmap对象,通常对一个不用的Bitmap可以使用下面的方式,如
    Java代码

    if(bitmapObject.isRecycled()==false) //如果没有回收   
             bitmapObject.recycle();      
    
    if(bitmapObject.isRecycled()==false) //如果没有回收            bitmapObject.recycle();    
    

    [/code]

    点赞 评论
  • kingj126 2012-01-06 13:13

    使用WeakReferenceHashMap的时候,虽然每次插入数据前,你做了判断,但是并不能保证在你修改了某个图片内容后,它能消除对象的引用。即使能够消除在WeakReferenceHashMap中的对象应用,也不能保证GC立即进行垃圾回收,依靠remove方法是不能解决OOM问题的,考虑一下为什么需要缓存BitMap类型集合,是否可以采取其它方式提高效率

    点赞 评论
  • suziwen 2012-01-06 13:16

    将REMOVE后的对像手动设置 为NULL

    点赞 评论

相关推荐 更多相似问题