java单例模式怎么释放资源 RT 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 释放资源和释放内存不冲突,是两个事情,而且资源,例如File,Socket,只有程序员才知道什么时候不需要再使用它们了,程序最多知道你哪个变量没有引用了。如果资源被这样的成员引用了。而且是依靠GC的时候来释放资源,那就太2了如果你知道你不再需要某个文件了,你不去Close它,而是等待那给Hold它的对象被GC,可是你知道什么时候GC吗?你不可能知道,然后你那个File还不能再打开,这不就是悲剧嘛。?!所以,结论就是资源不用的时候,程序员自己Close它。单例也如此,结贴吧。 以上提到的File,是广义的File,不要单纯理解为磁盘文件。结论就是不管是不是Singleton,都应该由程序员主动关闭资源。 当然有必要了,有些资源程序退出的时候,可能还是被占用的【例如JVM占用着】。比如某个Socket bind了某个端口,你程序退出去,没有close socket,这时候JVM可能还Hold着这个端口。使得你下次再启动程序,都无法Bind这个端口,这种情况没有见过吗? Yes给你的Singleton提供个 ReleaseResource方法就行了。这是唯一可行,又简单的做法。 一个对象(或者资源)放到全局,可以被谁访问到,或者以Context的方式传递着,可以被谁访问到,或者成为某个对象的成员或Reference,这个是访问性的问题。Singleton的本意是解决访问性的问题。一个对象(或者资源),什么时候创建,什么时候释放,是一个生命周期的问题,当然了,和访问性有些关系。但是关系不大。(例如你要手工释放它的时候,你访问不到它,那你怎么释放啊?当然了,这不是绝对的..)我习惯把事情分解为基本上不相关的几个角度来看。资源释放,1. 它和是不是Singleton其实没有关系。如果说有关系,就是我上面括号里面说的(是程序员访问它的close,还是系统GC访问它的close)排除Singleton的影响,资源就是用完的时候关闭,没有别的了。 你纠结在我说的,搞得你学习的Singleton模式不像是Singleton了吧? 不要的变量还什么的设为NULL么..流,数据库的不用就关了,释放资源是GC做的事 释放资源,这个好像,单类不用吧,释放资源是释放内存,但是 java本身就提供了一些方法可以释放,程序员需手动释放的资源好像就是如流那样的。其他的释放要想编写手动的话,容易出问题吧。 感觉 单例不用去手动kill吧? 唉,脱离SSH都不会写代码了吧? 在所有可能引起错误的地方加try{}catch{}并且加上finally{ 这里调用资源释放的方法 } 怎么让按钮同时按下 关于java的Runtime.exec的问题 麻烦大家看看下面那个字符串怎么转化,谢谢了 0x12345怎样格式化输出为00012345? 初学java,求java基础与案例开发详解 张孝全 pdf电子书 jar 为什么加载不了图片,求助了 初学者问题 [求助]关于线程的学习? 谁能提供Oracle 9.1.0.1版的JDBC驱动(classes12.jar)??? 哪里有讲JMF2.1(and up)的电子书籍? 关于frame frameset的一个小问题 问几个简单的语句~
可是你知道什么时候GC吗?你不可能知道,然后你那个File还不能再打开,这不就是悲剧嘛。?!所以,结论就是资源不用的时候,程序员自己Close它。单例也如此,结贴吧。
当然有必要了,有些资源程序退出的时候,可能还是被占用的【例如JVM占用着】。比如某个Socket bind了某个端口,你程序退出去,没有close socket,这时候JVM可能还Hold着这个端口。
使得你下次再启动程序,都无法Bind这个端口,这种情况没有见过吗?
Yes给你的Singleton提供个 ReleaseResource方法就行了。这是唯一可行,又简单的做法。
但是关系不大。(例如你要手工释放它的时候,你访问不到它,那你怎么释放啊?当然了,这不是绝对的..)我习惯把事情分解为基本上不相关的几个角度来看。资源释放,1. 它和是不是Singleton其实没有关系。如果说有关系,就是我上面括号里面说的(是程序员访问它的close,还是系统GC访问它的close)
排除Singleton的影响,资源就是用完的时候关闭,没有别的了。
你纠结在我说的,搞得你学习的Singleton模式不像是Singleton了吧?
感觉 单例不用去手动kill吧?