首页 > Java > java教程 > Java 的垃圾收集器会回收'MyUtils”中的'myObject”等静态字段吗?

Java 的垃圾收集器会回收'MyUtils”中的'myObject”等静态字段吗?

Patricia Arquette
发布: 2024-11-28 13:21:15
原创
917 人浏览过

Will Java's Garbage Collector Reclaim Static Fields Like `myObject` in `MyUtils`?

Java 中的静态字段垃圾收集

问题:

在 Java 中,考虑一个假设的实用程序类,仅在程序设置:

class MyUtils {
    private static MyObject myObject = new MyObject();
    /*package*/static boolean doStuff(Params... params) {
        // do stuff with myObject and params...
    }
}
登录后复制

myObject 是否有资格成为垃圾不再需要时进行回收,还是会在整个程序的生命周期中持续存在?

答案:

静态字段在加载其类时不符合垃圾回收条件。只有当负责加载该类的类加载器本身被垃圾回收时,它们才能被收集。

根据 Java 语言规范 (JLS) 第 12.7 节“类和接口的卸载”:

当且仅当其定义的类加载器可以被垃圾收集器回收时,类或接口才可以被卸载[...]加载的类和接口引导加载程序可能不会卸载。

因此,在提供的示例中,只要加载类 MyUtils,myObject 就会持续存在。在加载 MyUtils 的类加载器也符合垃圾回收资格之前,它不会被垃圾回收。

以上是Java 的垃圾收集器会回收'MyUtils”中的'myObject”等静态字段吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板