【发布时间】:2012-01-04 08:22:21
【问题描述】:
如果一个对象在某个类中有一个静态引用,该对象永远不会被垃圾回收吗?还有什么时候会初始化静态字段?
【问题讨论】:
标签: java
如果一个对象在某个类中有一个静态引用,该对象永远不会被垃圾回收吗?还有什么时候会初始化静态字段?
【问题讨论】:
标签: java
嗯,这个问题已经被多次询问过了。既然这是两个问题,我们来分解一下:
当加载静态变量的 ClassLoader 可选择进行垃圾收集时,静态变量将被垃圾收集。检查这篇文章: Are static fields open for garbage collection?
至于初始化,一旦持有它们的类第一次加载,它们就会被初始化。也检查这个帖子: Why static fields are not initialized in time?
【讨论】:
加载类时会初始化静态字段。当它的类加载器被卸载时,它就可以被 GCed 了。
【讨论】: