Java 加载静态使用的位图对垃圾收集有害吗?

Java 加载静态使用的位图对垃圾收集有害吗?,java,android,bitmap,garbage-collection,Java,Android,Bitmap,Garbage Collection,我创建了一个类,用于加载位图图像并将其存储在静态上下文中: public class ImgLoader extends View { public static Bitmap tree1; public ImgLoader(Context context) { super(context); loadImgs(); } public void loadImgs() { tree1 = BitmapFactory.decodeResource(getResource

我创建了一个类,用于加载位图图像并将其存储在静态上下文中:

public class ImgLoader extends View {

public static Bitmap tree1;

public ImgLoader(Context context) {
    super(context);
    loadImgs();
}

public void loadImgs() {
    tree1 = BitmapFactory.decodeResource(getResources(), R.drawable.tree);
}
}
然后,我通过以下操作访问此图像:

Bitmap tree = ImgLoader.tree1;

除了这样做,还有其他选择吗?因为它可能会导致GC出现一些问题。

您可以将此方法添加到类中

public void recycleBitmap(){
    if(tree1 != null){
        tree1.recycle();
    }
    tree1 = null;
}

对。静态加载位图不利于垃圾收集。由于位图将保留在内存中,它将消耗内存,不会被垃圾收集。然而,这并没有什么好处


这是一种更好的显示图像的方法。如果您多次使用同一个图像,将其设置为静态并重复使用肯定会节省一些内存。另外,如果您想在多个视图上显示图像,而不想加载它们,将其设置为静态将有助于您。正如我们所知,膨胀UI是一项繁重的操作,从IO加载位图也是如此。因此,静态图像很好地使用,特别是在需要多个副本的情况下

您可以使用
软引用
来存储对图像的引用。然后,如果程序中没有使用映像的位置,垃圾收集器可以自由地清理映像


如果映像已被垃圾收集,则需要重新加载它,否则它将保留在内存中,准备重新使用。

在需要时加载映像。不要不必要地把它记在记忆中。