Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 静态嵌套类何时被垃圾回收?_Java - Fatal编程技术网

Java 静态嵌套类何时被垃圾回收?

Java 静态嵌套类何时被垃圾回收?,java,Java,我知道在程序结束之前,静态变量或方法永远不会被垃圾收集,但是静态嵌套类是如何工作的呢? 我在oracle网站上找到了这句话,我知道顶级类不能是静态的,所以嵌套的静态类将表现为非静态类。但这并不能保证它是否也会以同样的方式被垃圾收集 静态嵌套类与其外部对象的实例成员交互 类(和其他类)就像其他顶级类一样。在里面 结果,静态嵌套类在行为上是一个顶级类 已嵌套在另一个顶级类中,以方便打包 当没有GC根仍然引用静态嵌套类时,静态嵌套类的实例将有资格进行垃圾收集,就像任何其他对象一样 当加载该类的类加载器

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

静态嵌套类与其外部对象的实例成员交互 类(和其他类)就像其他顶级类一样。在里面 结果,静态嵌套类在行为上是一个顶级类 已嵌套在另一个顶级类中,以方便打包

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

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


甚至内部类的行为方式也是一样的-隐式引用是从内部类实例到封闭类的实例。。。因此,内部类的实例可以“秘密地”防止封闭类的实例被垃圾收集,但反之亦然。(显然,封闭类的实例可以引用内部类的实例,但只能显式引用。)

当类装入器卸载它时,与其他类类似。谢谢您的快速回答。