2012-07-23 66 views
-5

考虑下面的代码当对象不再使用但仍然占用内存时,我们可以称它为一个对象吗?

String variable = ""; 
variable = "3"; 
variable = "4"; 

创建由于字符串是不可变的,会有三个对象。但只有值被分配给“4”的最后一个对象才是有效的。

根据定义,前面行(变量=“3”和变量=“”)中使用的对象仍在内存中。

我的问题是,当对象不再引用,我还可以把它称为一个对象或作为仅有未可用存储器位置

+4

它并不真正的问题是什么,你称呼它。 – 2012-07-23 14:54:02

+0

:D是什么?你可以称它为一个对象,垃圾,不可用的内存位置,字符串,实例等等...... – 2012-07-23 14:54:49

回答

1

对象始终是对象。如果可以访问,则在下一个GC周期中不符合GC要求。否则,它有资格获得GC。

0

我认为你仍然可以调用它的对象,因为你可以使用this.variable =“3”; 也许

1

对于初学者来说,String对象不会在一般堆中创建,它们宁愿驻留在字符串池中。所以,即使“”和“3”没有被任何变量引用,它们仍然会留在池中,等待将来使用(或者被销毁)。所以不,他们不在不可用的内存位置。

要回答你的问题,他们仍然会被称为对象。

0

它们不再被代码引用,它们实际上只是内存中某个位置的字节模式,但它们仍然是对象。 GC必须对该对象进行处理,以便能够最终确定它。因此,他们仍然“功能”为对象...

参见:When is the finalize() method called in Java?

相关问题