社区
Java
帖子详情
请问:一个singleton对象的声明周期?
iforem
2003-08-19 08:24:15
一个单例类,被实例化
那么这个singleton的声明周期是一直都存在?还是被gc回收(当无引用的时候)?
我感觉singleton对象会一直存在,因为自引用
...全文
29
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的,所以初始化好以后就一直存在了
区块链之Go语言设计模式
每
一个
聚集
对象
都可以有
一个
或
一个
以上的迭代子
对象
,每
一个
迭代子的迭代状态可以是彼此独立的。迭代算法可以独立于聚集角色变化。 我爱上了Mary,不顾一切的向她求婚。Mary:“想要我跟你结婚...
08-Spring中
对象
的生命
周期
(Bean的
声明
周期
)
上一篇:07-Spring
对象
的创建次数
singleton
|prototype https://blog.csdn.net/fsjwin/article/details/109427054
对象
均有
声明
生命,而spring对
对象
的创建生命
周期
有spring控制,我们有必要其探究其对
对象
声明
周期
的创建,更有利于我们更为微观的掌握spring 生命
周期
:
对象
的创建、存活、消亡全过程
声明
周期
分为三个阶段 创建 初始化 销毁 1.
对象
创建 Product.java代码交代 package base.lif
Singleton
模式
Singleton
模式是一种非常简单的设计模式,这种模式很常用也很容易被滥用。当你设计应用程序的时候,经常会遇到某些
对象
在整个程序的生命
周期
应该仅有
一个
实例的情况,比如File System,Graphic System,Logging Utility,这时候就可以用到
Singleton
模式。
Singleton
模式在GOF中描述如下:
Ensure a class only has one instance, and provide a global poi
java编写
singleton
程序_Java中
Singleton
的3种实现方式详解
一、什么是
Singleton
?《设计模式》的作者、Eclipse和 Junit 的开发者 Erich Gamma 在它的理论体系中将
Singleton
定义为仅仅被实例化一次的类。在当今面向
对象
程序的实际开发中,
Singleton
通常被用来代表
一个
无状态的
对象
,例如函数和那些本质上唯一的系统组件。值得注意的是,使类成为
Singleton
会使得它的客户端测试变得非常困难,因为我们不可能给Si...
剑指offer面试题(2)——实现
Singleton
模式
转自:我想有个长长的名字的博客,剑指offer 面试题2
Singleton
模式 C++实现题目:实现
Singleton
模式 以下内容是我在看《剑指offer》的面试题2时,遇到的问题,因为书中使用C#实现,所以想用C++重新实现一下,Test方法不够全,后续还要完善。C++实现过程主要参考:C++设计模式——单例模式。 代码中的注释一般是我的笔记,或一些发现。 PS: 感谢勤劳的慵懒君~~...
Java
50,527
社区成员
85,606
社区内容
发帖
与我相关
我的任务
Java
Java相关技术讨论
复制链接
扫一扫
分享
社区描述
Java相关技术讨论
java
spring boot
spring cloud
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章