java - 单例对象是否有资格进行垃圾回收?类中的静态字段如何进行垃圾收集?

标签 java jvm

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

最佳答案

只有当加载该静态变量所属类的类加载器也被垃圾收集时,静态变量才会被垃圾收集。

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

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

请注意,这是简单的解释,如果您有兴趣,还有更多详细信息,好的起点是 Java 13 class unloading specification

关于java - 单例对象是否有资格进行垃圾回收?类中的静态字段如何进行垃圾收集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59452942/

相关文章:

java - 输出差异 - Java

java - 我需要什么 hadoop jar 来获得 WeightAdjuster 界面

java - 如何在一个java进程中调用我的jar文件

java - 从 Hangman 的 char [] 数组中删除所有非唯一字母

java - 如何在 Spring/MVC 3.0 应用程序中使用带有磁贴的常见错误页面模板?

java - 我的 GUI 中的原点偏移了大约 25/26 像素

Java 堆设置

java - 为什么会出现Permgen OutOfMemoryError?

Java JNA WindowProc JVM 崩溃

java - 是否可以创建多个对象的列表,其中对象采用多个参数?