Bitmap的回收
Bitmap的回收
在Android里,垃圾的回收是靠系统来调度的。之前在网上查Bitmap的回收,大家都说Bitmap不会被系统的自动的垃圾回收。于是,做了个简单的测试,发现Bitmap的回收和普通的垃圾回收应该是一致的。
代码如下:
public void getBmp(View view)
{
String str = "/sdcard/pic.jpg";
Bitmap bmp = BitmapFactory.decodeFile(str);
}
发现,内存占用并不会随着改函数的调用而上升。如下所示:
当代码如下时:(其中, list为全局变量)
public void getBmp(View view)
{
String str = "/sdcard/pic.jpg";
Bitmap bmp = BitmapFactory.decodeFile(str);
list.add(bmp);
}
public void recycleBmp(View view)
{
list.clear();
System.gc();
}
先多次调用getBmp,在调用recycleBmp时,其内存占用如下:
由此可以证明,Bitmap在垃圾回收机制中被不占用特殊的地位。当某一Bitmap没有被引用时,垃圾回收会将其回收。
另外,在调用ImageView.setImageDrawable(null)后立即调用System.gc(),并不会立即将ImageView之前所有的Drawable回收。