我正在搜索jvm和垃圾收集在java应用程序中如何工作,我想知道java单例对象是否符合java垃圾收集的条件,类中的静态字段如何被垃圾收集?
我还知道现在在 java8 和最新版本中,对象的元数据存储在元空间中,但真正包含此元数据的是什么。
谢谢。
最佳答案
只有当加载该静态变量所属类的类加载器也被垃圾收集时,静态变量才会被垃圾收集。
除了引导类加载器之外的所有类加载器都可以被垃圾收集,尽管这在大多数标准应用程序中很少发生,因为类加载器仅在以下情况下才会被垃圾收集:
- 类加载器加载的任何类都没有可访问的实例
- 没有由类加载器加载的可访问类(包括我们的静态变量所属的类)
- 类加载器本身无法访问
请注意,这是简单的解释,如果您有兴趣,还有更多详细信息,好的起点是 Java 13 class unloading specification
关于java - 单例对象是否有资格进行垃圾回收?类中的静态字段如何进行垃圾收集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59452942/