【问题标题】:When is a singleton class object garbage collected?何时收集单例类对象垃圾?
【发布时间】:2015-09-02 17:35:45
【问题描述】:

如果类的单个实例是使用单例模式创建的,如果长时间不被引用,如果GC发现叶子是Singleton实例的无根树,是否会被垃圾回收?

【问题讨论】:

  • 您使用哪种语言?

标签: garbage-collection singleton singleton-methods


【解决方案1】:

好吧,单例模式是通过定义一个私有静态字段、一个私有构造函数和一个返回该字段的静态方法来实现的。所以,问题归结为:一个静态字段被垃圾回收了吗?

答案是否定的,至少根据这个 SO 答案:Do static members ever get garbage collected?

因此,即使没有其他对静态字段的引用,它也不会被 GC。

【讨论】:

  • 使用 Enum 实现 Singleton 的情况如何?
  • 看到,在原始问题中,如果我们在引用对象的类中有一个静态字段,并且我们将其设置为 null,那么它之前引用的对象可以被 GC'ed,但是这样做我们打破了单例模式。
猜你喜欢
  • 2020-11-29
  • 1970-01-01
  • 1970-01-01
  • 2010-11-08
  • 2016-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多