一尘不染

Java 是否打开静态字段以进行垃圾回收?

java

给定仅在程序设置中使用的假设实用程序类:

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

不再使用myObject时会对其进行垃圾回收,还是在程序的生命周期内始终存在?


阅读 361

收藏
2020-03-03

共1个答案

一尘不染

加载类时,不能选择静态变量进行垃圾回收。当各自的类加载器(负责加载此类)本身被收集为垃圾时,可以收集它们。

查看JLS第12.7节卸载类和接口

仅当垃圾回收器可以回收定义的类加载器时,才可以卸载类或接口。引导加载器加载的类和接口可以不卸载。

2020-03-03