java对象的创建和销毁

时间:2013-09-09 09:14:35

标签: java android memory

我有一个大位图,使用Bitmap.createBitmap()创建。写作有什么意义

bitmap = null;

之前

bitmap = Bitmap.createBitmap();

让GC在构造新位图时使用旧位图占用的内存。

API级别为11。

谢谢。

2 个答案:

答案 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