Java 是否打开静态字段以进行垃圾回收?
给定仅在程序设置中使用的假设实用程序类:
class MyUtils { private static MyObject myObject = new MyObject();
/*package*/static boolean doStuff(Params... params) {
// do stuff with myObject and params...
}
}
不再使用myObject时会对其进行垃圾回收,还是在程序的生命周期内始终存在?
回答:
加载类时,不能选择静态变量进行垃圾回收。当各自的类加载器(负责加载此类)本身被收集为垃圾时,可以收集它们。
查看JLS第12.7节卸载类和接口
仅当垃圾回收器可以回收定义的类加载器时,才可以卸载类或接口。引导加载器加载的类和接口可以不卸载。
以上是 Java 是否打开静态字段以进行垃圾回收? 的全部内容, 来源链接: utcz.com/qa/401320.html