我有一个大位图,使用Bitmap.createBitmap()
创建。写作有什么意义
bitmap = null;
之前
bitmap = Bitmap.createBitmap();
让GC在构造新位图时使用旧位图占用的内存。
API级别为11。
谢谢。
答案 0 :(得分:0)
bitamp = null;
无法确保GC释放位图对象占用的内存。 Brcause
因为Bitmap是最终类,所以GC的最终对象的优先级非常低。使用bitmap.recycle()
方法确保垃圾收集(GC)。
答案 1 :(得分:0)
http://www.youtube.com/watch?v=_CruQY55HOk
观看11:23左右的视频。这家伙谈论位图内存管理
它留给垃圾收集器释放内存。而不是bitmap = null
使用bitmap.recycle()
在andorid 2.3.3及更低版本上。在3.0及更高版本上使用BitmapFactory.Options.inBitmap
Android - Bitmap and memory management?
http://developer.android.com/training/displaying-bitmaps/manage-memory.html
在android 2.3.3及更低版本
在Android 2.3.3(API级别10)及更低版本上,建议使用recycle()。如果您在应用中显示大量位图数据,则可能会遇到OutOfMemoryError错误。 recycle()方法允许应用程序尽快回收内存。
在Android 3.0及更高版本
位图像素数据存储在堆
上Android 3.0(API Level 11)引入了BitmapFactory.Options.inBitmap字段。如果设置了此选项,那么采用Options对象的解码方法将在加载内容时尝试重用现有位图。 这意味着位图的内存被重用,从而提高了性能,并删除了内存分配和取消分配。
同时检查这可能有帮助
http://developer.android.com/training/displaying-bitmaps/load-bitmap.html