Java 单例对象是否符合垃圾收集的条件?类中的静态字段如何被垃圾回收?

Java 单例对象是否符合垃圾收集的条件?类中的静态字段如何被垃圾回收?,java,jvm,Java,Jvm,我正在搜索jvm和垃圾收集在java应用程序中是如何工作的,我想知道java单例对象是否符合java垃圾收集的条件,类中的静态字段是如何被垃圾收集的? 我还知道,现在在java8和最新版本中,对象的元数据存储在metaspace中,但真正包含这种元数据的是什么呢。 谢谢。静态变量只在加载该静态变量所属类的类加载器也被垃圾收集一次后才会被垃圾收集 除了引导类加载器之外的所有类加载器都可以被垃圾收集,尽管在大多数标准应用程序中很少会发生这种情况,因为类加载器只有在以下情况下才会被垃圾收集: 类加载

我正在搜索jvm和垃圾收集在java应用程序中是如何工作的,我想知道java单例对象是否符合java垃圾收集的条件,类中的静态字段是如何被垃圾收集的?
我还知道,现在在java8和最新版本中,对象的元数据存储在metaspace中,但真正包含这种元数据的是什么呢。

谢谢。

静态变量只在加载该静态变量所属类的类加载器也被垃圾收集一次后才会被垃圾收集

除了引导类加载器之外的所有类加载器都可以被垃圾收集,尽管在大多数标准应用程序中很少会发生这种情况,因为类加载器只有在以下情况下才会被垃圾收集:

  • 类加载器加载的任何类都没有可访问的实例
  • 类加载器没有加载的可访问类(包括静态变量所属的类)
  • 类加载器本身不可访问

请注意,这是一个简单的解释,如果您感兴趣,这里有更多的细节,好的起点是

您在这里有一些问题–关于“对象的元数据”,请看一下或其他问题+答案。