如果我多次使用“image = new Image(...)”。我会在内存中收集垃圾吗?

时间:2012-08-27 15:38:53

标签: java image memory-management garbage-collection libgdx

我需要在游戏中多次更改“图像”的纹理。

 Image image;
 stage1.AddActor(image);
 image = new Image(texture1);
 image = new Image(texture2);
 image = new Image(texture1);
 image = new Image(texture2);
 ...

这是对的吗?我是否会在记忆中收集garbade? 使用一些如下图像不舒服:

image1=new Image(texture1);
image2=new Image(texture2);
image1.visible=true;
image2.visible=false;
...
image1.visible=false;
image2.visible=true;
....

感谢。

2 个答案:

答案 0 :(得分:2)

是:

Image image;
image = new Image(texture1);
image = new Image(texture2); //new Image(texture1) can now be GC'ed

但请注意,只有在无法访问时才会收集垃圾。因此,如果您在列表中引用new Image(texture1),则会阻止垃圾收集器完成其工作。

答案 1 :(得分:1)

 Image image;
 image = new Image(texture1);
 image = new Image(texture2);
 image = new Image(texture1);
 image = new Image(texture2);

是更好的方法,因为当您image = new Image(texture2);以上时new Image(texture1);符合GC的条件,假设它无法访问。

当GC发生并且对象将被GC负责时,JVM负责。