3

如果我重新实例化一个静态类,之前分配的内存会发生什么?

4

1 回答 1

4

只有嵌套类可以static。嵌套static类的实例的行为类似于任何其他类的实例:

  • 只要有对它的实时(即可达)引用,实例就会被保留;
  • 一旦它变得不可访问,它就有资格进行垃圾收集;
  • 在它符合条件后的某个时刻,它会被垃圾收集。

如果您实际上是在询问static参考:

public static Object obj = object1;
public static void main(String[] args) {
  obj = object2;
}

这些行为与任何其他参考一样。

在上面的代码中,一旦您重新分配obj指向object2,这可能会或可能不会有object1资格进行垃圾收集。这完全取决于是否有任何幸存的引用。

于 2013-03-14T13:32:53.733 回答