欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

究竟应该等待垃圾回收还是手动释放

更新时间: 2014-01-05 01:58:35 责任编辑: Author_N1

 

到底应该等待垃圾回收还是手动释放?
例如SqlDataReader、StringBuilder这些~用完后需要dr.Dispose()和sb.remove(0,sb.lenght)这些释放操作?

以前我一般都是用完就等待垃圾回收机制回收(肯定先关闭的~dr.close())~现在尝试全部手动释放而不等待垃圾回收~却发现执行效率比以前更慢了~


请问为什么手动释放会更慢?难道是我代码的问题?
--参考方法--
据我所知,就算是你手动执行了释放操作,但是真正的内存释放还是要等到jvm的垃圾回收时才会执行。至于程序效率变低的问题,还得看你的程序是怎样的。并且,垃圾回收算法是经过优化了的,她的执行效率会是比你手动的要高。如果你是一般的程序的话,建议你还是不要手动释放。但是对于那些内存存在限制的情况,应该可以通过配置与虚拟机来解决。
--参考方法--
   jvm的垃圾回收其实并不简单,它涉及到垃圾回收时间的选择,以及回收策略,合并内存碎片。不同的版本的jvm采用的垃圾回收方法并不相同,也都各有侧重。例如实时系统就会侧重保证用户程序的实时性,而一般的会更多的侧重于执行效率。建议看看jvm规范。
    效率降低的话,不知道你的效率是如何测出来的。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 01:58:35
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/3936/
本文WWW.DOC100.NET DOC100.NET版权所有。