创建多个静态类实例时会发生什么?

时间:2013-03-14 13:29:31

标签: java class static

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

1 个答案:

答案 0 :(得分:4)

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

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

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

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

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

在上面的代码中,一旦您重新分配obj以指向object2,这可能会或可能不会使object1符合垃圾回收的条件。这完全取决于是否有任何幸存的引用。