只要加载了包含静态变量的类,垃圾回收器就永远不会卸载该类。即使不再使用该类,静态变量在程序运行期间仍保留在内存中。
class MyUtils { private static MyObject myObject = new MyObject(); /*package*/static boolean doStuff(Params... params) { // do stuff with myObject and params... } }
在此示例中,myObject 是静态变量,因此它在卸载 MyUtils 类之前,将不符合垃圾回收的条件。由于类永远不会被卸载,myObject 将在程序的整个生命周期中保留在内存中。
JLS 第 12.7 节类和接口的卸载指出类或接口只能被如果其定义的类加载器可以被垃圾收集器回收,则卸载。引导加载程序加载的类和接口可能无法卸载。
以上是静态字段什么时候可以被垃圾收集?的详细内容。更多信息请关注PHP中文网其他相关文章!