【发布时间】:2023-04-02 19:25:01
【问题描述】:
我有一个单身课程。 还有一个类使用单例实例。如下:
class A {
SingletonDemo obj = SingletonDemo.getInstance() ;
.
.
.
}
现在我知道 SingletonDemo 类中 SingletonDemo 的实例的生命周期是程序的生命周期。
但是 obj 在 A 类中的生命周期呢? 当控制从 A 类退出时它会被垃圾收集还是会在整个程序的生命周期中存在?
【问题讨论】:
-
它不是 A 类中的新对象,只是指向同一个单例 obj 的引用。
-
你的问题真的没有意义。
SingletonDemo obj字段是对单例的reference。如果您正确实现了单例模式,那么将只有 一个 实例,正如您所说,它将在程序的整个生命周期中持续存在。 -
您的意思是将
obj声明为静态的吗? -
是的,从第一次调用
getInstance()到 Jvm 死亡,单例保持不变。但是用户类对对象的引用会进出范围。 -
那么引用会怎样呢?内存映射中有一个部分分配给“obj”以指向静态实例,对吗?
标签: java reference garbage-collection singleton static-members