什么时候静态嵌套类被垃圾收集?

Rub*_*Yoo 2 java

我知道静态变量或方法永远不会被垃圾收集,直到程序结束,但静态嵌套类如何工作?我在oracle网站上找到了这个引用,我知道顶级类不能是静态的,所以嵌套的静态类将表现为非静态类.但它不能确保我是否也会以同样的方式收集垃圾.

静态嵌套类与其外部类(和其他类)的实例成员交互,就像任何其他顶级类一样.实际上,静态嵌套类在行为上是一个顶级类,它已嵌套在另一个顶级类中以方便打包.

Jon*_*eet 8

当没有GC根仍然引用它时,静态嵌套类的实例将有资格进行垃圾收集 - 就像任何其他对象一样.

当加载它的类加载器有资格进行垃圾收集时,类本身将有资格进行垃圾收集 - 就像任何其他类一样.

甚至内部类的行为方式相同 - 隐式引用是从内部类实例到封闭类的实例......所以内部类的实例可以"秘密地"防止封闭类的实例被垃圾收集,但不是相反.(显然,封闭类的实例可以引用内部类的实例,但只能显式引用.)