在单例模式中,单例类会不会被GC回收掉?为什么?

albert_qhd 2003-04-07 11:51:02
谢谢!
...全文
529 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
DavidBone 2003-04-20
  • 打赏
  • 举报
回复
ding
DavidBone 2003-04-20
  • 打赏
  • 举报
回复
up
DavidBone 2003-04-20
  • 打赏
  • 举报
回复
up
mem_fox 2003-04-15
  • 打赏
  • 举报
回复
刚才手哆嗦了一下,还没有说完。static来保留对象引用,static是不会被JVM回收,所以他所引用的对象也不会被回收
mem_fox 2003-04-15
  • 打赏
  • 举报
回复
GC只回收没有任何对象引用的Object
tonypotter 2003-04-15
  • 打赏
  • 举报
回复
类一旦被classloader加载到JVM中就不能被清除,直到JVM关闭。因此单例类是不可能被GC回收的
cxy_ll 2003-04-13
  • 打赏
  • 举报
回复
它的生存期应该是所在应用的生命期
比如应用程序的一次run过程中,web应用服务器关闭之前
xiaohaiz 2003-04-11
  • 打赏
  • 举报
回复
不用再争辩了,ZeroC(笨小孩) 和 pcwl(pcwl) 已经解释得很清楚了. 单例类对象的引用始终被保留当然不会被垃圾回收.这么基本的一点,java当然保证了.
wyqiang 2003-04-10
  • 打赏
  • 举报
回复
我想
gc
不会有那功能
czjcsdn 2003-04-09
  • 打赏
  • 举报
回复
不清楚楼主的意思,尝试一下,看看理解地对不对

class a{}

a a1=new a(); 这个a1除非被赋值为null(即 a1=null ),否则 GC 不会理它

new a(); 这里,虽然新生成了一个,但没有 reference 与它关联所以立刻被 GC 回收
pcwl 2003-04-09
  • 打赏
  • 举报
回复
不会!
class Singleton
{
private static Singleton s_instance;//private静态实例
private Singleton(){}//private构造子防止外部new它
public static synchronized Singleton GetInstance()
{
if(s_instance == null)
s_instance = new Singleton();
return s_instance;
}
因为静态成员m_instance始终拥有指向Singleton实例的引用,所以不能被GC回收,但是你当
然有办法使它被GC所回收。如加一个外部方法:
class Singleton
{
//上面的所有代码
public static close(){s_instance = null;}
}
albert_qhd 2003-04-09
  • 打赏
  • 举报
回复
谁能深入解释一下?
ZeroC 2003-04-09
  • 打赏
  • 举报
回复
singleton模式中主要是通过static来保留对象的引用的
这种模式下,singleton的类是不会被gc掉的
wylove 2003-04-09
  • 打赏
  • 举报
回复
Singleton模式是做为"全局变量"的替代品出现的。所以它具有全局变量的特点:全局可见、贯穿应用程序的整个生命期.根据这个特点,我认为他不会被gc回收,所以如果需要的话,应该显式释放!
cowboy1114 2003-04-08
  • 打赏
  • 举报
回复
虽然我不知道单例模式是什么样子,但有一点我可以肯定:只要生成了类,就一定分配了内存,因此就一定会被GC回收掉,除非其中还用到原生函数手动分配了内存,那就要在finalize()中free了。
mercury1231 2003-04-07
  • 打赏
  • 举报
回复
学习***


什么叫单例类啊?英文是什么?

50,549

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧