社区
Java
帖子详情
请问:一个singleton对象的声明周期?
iforem
2003-08-19 08:24:15
一个单例类,被实例化
那么这个singleton的声明周期是一直都存在?还是被gc回收(当无引用的时候)?
我感觉singleton对象会一直存在,因为自引用
...全文
70
16
打赏
收藏
请问:一个singleton对象的声明周期?
一个单例类,被实例化 那么这个singleton的声明周期是一直都存在?还是被gc回收(当无引用的时候)? 我感觉singleton对象会一直存在,因为自引用
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yak2002
2003-09-09
打赏
举报
回复
主要是JVM决定的...
一般来说, reference 有四种, Singleton永远保留一个Strong reference, 因此
不可能被Garbage Collector收集.
jeffyan77
2003-09-09
打赏
举报
回复
我同意armorking2003(阿墨)、netcobol(初学者) 的观点。
廖雪峰
2003-09-09
打赏
举报
回复
jvm 对于每个静态变量,线程对象都会保持一份引用,只有结束程序才会回收
廖雪峰
2003-09-09
打赏
举报
回复
事实上,对于static变量,自从类加载器加载此类后到程序结束,该变量都不会被gc回收,但是第一次加载在什么时候要看外部类什么时候引用它,jvm的类加载器是动态加载类的。
singleton可以在加载类时就初始化:
private static Singleton instance = new Singleton();
好处是getInstance()方法不需要同步:
static public Singleton getInstance() { return instance; }
也可以需要时加载:
static synchronized public Singleton getInstance(){
if (instance == null) {
instance = new Singleton();
}
return instance;
}
这时必须同步整个方法,注意不能使用双重检查,因为java和C++不同,不支持双重检查,
以下是错误的:
static public Singleton getInstance() {
if(instance==null){
synchronized(this) {
if(instance==null)
instance=new Singleton();
}
}
return instance;
}
netcobol
2003-09-09
打赏
举报
回复
事实上,因为对象是static 的,只要jvm还没关掉
就一直存在
vc_hking
2003-09-01
打赏
举报
回复
你可以在gc中销毁掉呀
xiaow
2003-08-22
打赏
举报
回复
啊啊。看了你的例子,应该是第一次运行getInstance()后这个实例对象才会生成,然后,由于是静态的,这个对象不会被销毁。
iforem
2003-08-21
打赏
举报
回复
大家能说说singleton类的实例会一直存在的原因吗?
我的理解是这样的:
在前面所说的singleton实现中,一旦singleton类被实例化,将会有一个静态的引用一直指向它(static private Singleton instance)
也就是说,对这个实例,不会出现没有人引用它的情况,所以,这个实例对象会一直存在,不会被jvm回收
iforem
2003-08-21
打赏
举报
回复
怎么没有人啊?
chyihill
2003-08-21
打赏
举报
回复
因为对象是static 的,所以就一直存在,直到jvm关闭,小心,如果对象太大的话,会很占内存的,有可能会导致outofmomeny的。。
freejacky
2003-08-20
打赏
举报
回复
singleton对象的生命周期是:从程序运行,一直到程序退出。
armorking2003
2003-08-20
打赏
举报
回复
事实上,只要jvm还没关掉
就一直存在
freejacky
2003-08-20
打赏
举报
回复
不把App Server关掉,应该是一直存在吧
iforem
2003-08-20
打赏
举报
回复
对于这种实现,singleton类的一个实例会一直存在吗?
public class Singleton
{
static private Singleton instance;
//constructor
//从配置文件中读取配置信息到数据结构中
private Singleton ()
{
……………………….
}
//返回唯一实例.如果是第一次调用此方法,则创建实例
static synchronized public Singleton getInstance()
{
if (instance == null)
{
instance = new Singleton();
}
return instance;
}
//读取数据结构中的配置信息
public String getProperty(String key)
{
return xxxx;
}
}
bdsc
2003-08-20
打赏
举报
回复
跟具体实现有关的
AlanLuo_2002
2003-08-19
打赏
举报
回复
singleton对象的确会一直存在因为一般singleton对象都是static的,所以初始化好以后就一直存在了
Spring - Spring配置文件详解-Bean
对象
细节剖析
Spring配置文件详解-Bean
对象
细节剖析
spring框架中的bean
对象
的
声明
周期
转载地址:http://developer.51cto.com/art/201104/255961.htm spring的产生bean
对象
在spring中,从BeanFactory或ApplicationContext取得的实例为
Singleton
,也就是预设为每
一个
Bean的别名只能维持
一个
实例,而不是每次都产生
一个
新的
对象
使用
Singleton
模式产生单一实例,对单线程的程序说并不会有什
07-Spring
对象
的创建次数
singleton
|prototype
上一篇:06-Spring复杂
对象
的创建 https://blog.csdn.net/fsjwin/article/details/109411629 为什么要考虑
对象
的创建次数呢? 不是每个
对象
每次均需要创建新的,这里
对象
唷两种,一种是单利,整个程序就
一个
对象
如SqlSessionFacrory。又如下面的
对象
每次均需要创建新的如Connection、Action(struts2)。 有效的控制
对象
的控制次数可以控制内存的开销。 1.控制
对象
的创建次数 什么
对象
需要是单例的呢? SqlSession
Bean的作用域和
声明
周期
该博客主题为Spring的生命
周期
和Bean的六种作用域,讲解了Spring容器如何管理Bean,包括实例化、属性赋值、初始化、使用和销毁等生命
周期
的各个阶段。同时,还介绍了六种作用域类型,包括
Singleton
、Prototype、Request、Session、Application和WebSocket。这篇博客描述清晰,结构清晰明了,让读者更好地理解Spring的基本概念和工作原理。
Object-C 中实现
Singleton
(单例) 模式
撰写本文参考于网上的一些帖子,资料,文档。 关于 面向
对象
的设计模式 对于面向
对象
的设计模式,想必大家并不陌生吧。 纵观23种设计模式中,数单例模式(
Singleton
)和工厂模式(Factory Method)最为熟悉和基础吧。当然,本文总结
Singleton
模式,对于其他设计模式不做叙说。
Singleton
模式,即单例模式。顾名思义,主要用于做应用程序的资源共享控制。用途
Java
51,407
社区成员
86,107
社区内容
发帖
与我相关
我的任务
Java
Java相关技术讨论
复制链接
扫一扫
分享
社区描述
Java相关技术讨论
java
spring boot
spring cloud
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章