给定一个仅在程序设置中使用的假设实用程序类:
class MyUtils {
private static MyObject myObject = new MyObject();
/*package*/static boolean doStuff(Params... params) {
// do stuff with myObject and params...
}
}
当 myObject 不再被使用时,它会被垃圾回收吗?还是会在程序的生命周期中一直存在?
加载类时,无法选择静态变量进行垃圾回收。当相应的类加载器(负责加载此类)本身被收集为垃圾时,可以收集它们。
查看JLS 第 12.7 节 类和接口的卸载 https://docs.oracle.com/javase/specs/jls/se8/html/jls-12.html#jls-12.7
类或接口可能被卸载
当且仅当其定义类
loader 可能会被垃圾回收
收集器[...]类和接口
由引导加载程序加载可能不会
被卸载。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)