Java 创建静态类的多个实例时会发生什么?
如果我重新实例化一个静态类,那么先前分配的内存会发生什么情况?只有嵌套类才能是静态的Java 创建静态类的多个实例时会发生什么?,java,class,static,Java,Class,Static,如果我重新实例化一个静态类,那么先前分配的内存会发生什么情况?只有嵌套类才能是静态的static。嵌套的静态类的实例的行为类似于任何其他类的实例: 只要存在对实例的实时(即可访问)引用,实例就会一直保留 一旦无法访问,它就有资格进行垃圾收集 在符合条件后的某个时刻,它将被垃圾收集 如果您实际上询问的是静态参考: public static Object obj = object1; public static void main(String[] args) { obj = object
static
。嵌套的静态
类的实例的行为类似于任何其他类的实例:
- 只要存在对实例的实时(即可访问)引用,实例就会一直保留李>
- 一旦无法访问,它就有资格进行垃圾收集李>
- 在符合条件后的某个时刻,它将被垃圾收集
静态参考:
public static Object obj = object1;
public static void main(String[] args) {
obj = object2;
}
它们的行为类似于任何其他引用
在上面的代码中,一旦您重新指定obj
指向object2
,这可能会也可能不会使object1
符合垃圾收集的条件。这完全取决于是否有任何幸存的引用。请向我们展示您的代码。没有它,这个问题就没有多大意义。静态类与顶级类在实例化方面没有什么不同。先前分配的内存仍然分配给先前创建的对象,直到该对象被垃圾回收。它将作为普通类加载。我猜当你指的是静态类时,只是你在一些带有静态修饰符的外部类中有它。静态内部类与普通类没有区别。你是指静态内部类吗?更准确地说,只有嵌套类才能是静态的。内部类的定义是非静态的。@assylias:很好,谢谢。我总是忘记哪个是哪个。@JBNizet:很公平。我这方面措词马虎。