【问题标题】:Java static fields [duplicate]Java静态字段[重复]
【发布时间】:2012-01-04 08:22:21
【问题描述】:

可能重复:
Are static fields open for garbage collection?

如果一个对象在某个类中有一个静态引用,该对象永远不会被垃圾回收吗?还有什么时候会初始化静态字段?

【问题讨论】:

标签: java


【解决方案1】:

嗯,这个问题已经被多次询问过了。既然这是两个问题,我们来分解一下:

当加载静态变量的 ClassLoader 可选择进行垃圾收集时,静态变量将被垃圾收集。检查这篇文章: Are static fields open for garbage collection?

至于初始化,一旦持有它们的类第一次加载,它们就会被初始化。也检查这个帖子: Why static fields are not initialized in time?

【讨论】:

  • 有时我想知道论坛是否被称为 SO,因为同样的问题被问了很多次。 ;)
【解决方案2】:

加载类时会初始化静态字段。当它的类加载器被卸载时,它就可以被 GCed 了。

【讨论】:

  • 什么时候卸载?
  • 没有在任何地方引用 ClassLoader 时。你只会在你创建的 ClassLoader 中看到这个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-02
  • 2011-06-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多