到底应该等待垃圾回收还是手动释放?

callmesai 2010-12-28 10:13:20
例如SqlDataReader、StringBuilder这些~用完后需要dr.Dispose()和sb.remove(0,sb.lenght)这些释放操作?

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


请问为什么手动释放会更慢?难道是我代码的问题?
...全文
107 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fwang004 2010-12-29
  • 打赏
  • 举报
回复
jvm的垃圾回收其实并不简单,它涉及到垃圾回收时间的选择,以及回收策略,合并内存碎片。不同的版本的jvm采用的垃圾回收方法并不相同,也都各有侧重。例如实时系统就会侧重保证用户程序的实时性,而一般的会更多的侧重于执行效率。建议看看jvm规范。
效率降低的话,不知道你的效率是如何测出来的。
fwang004 2010-12-28
  • 打赏
  • 举报
回复
据我所知,就算是你手动执行了释放操作,但是真正的内存释放还是要等到jvm的垃圾回收时才会执行。至于程序效率变低的问题,还得看你的程序是怎样的。并且,垃圾回收算法是经过优化了的,她的执行效率会是比你手动的要高。如果你是一般的程序的话,建议你还是不要手动释放。但是对于那些内存存在限制的情况,应该可以通过配置与虚拟机来解决。
callmesai 2010-12-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fwang004 的回复:]
据我所知,就算是你手动执行了释放操作,但是真正的内存释放还是要等到jvm的垃圾回收时才会执行。至于程序效率变低的问题,还得看你的程序是怎样的。并且,垃圾回收算法是经过优化了的,她的执行效率会是比你手动的要高。如果你是一般的程序的话,建议你还是不要手动释放。但是对于那些内存存在限制的情况,应该可以通过配置与虚拟机来解决。
[/Quote]

谢谢~但是有一个不明白的地方~释放只是一步的操作~这个还可以优化的吗?

而且最不明白的地方就是为什么效率反而更低了呢?难道是因为过多装箱拆箱?

谢谢~
内容概要:本文提出一种基于鱼鹰优化算法(OOA)优化的CNN-BiGUR-Attention混合模型,用于提升短期风电功率预测的精度与稳定性,采用Matlab实现代码仿真。该模型融合卷积神经网络(CNN)提取输入数据的局部空间特征,利用双向门控循环单元(BiGUR)捕捉风速、功率等时间序列的前后向动态依赖关系,并引入注意力机制自适应强化关键时间步的特征权重,从而增强模型对非平稳风电数据的表征能力;进一步,采用OOA算法对模型超参数进行全局寻优,有效提升模型收敛速度与泛化性能。研究基于实际风电场历史数据开展实验验证,结果表明,该方法相较传统模型在预测精度、鲁棒性和误差抑制方面表现更优,适用于高比例可再生能源接入背景下的电力系统调度需求。; 适合人群:从事新能源发电预测、电力系统优化调度、智能算法与深度学习融合应用等方向的科研人员及工程技术人员,尤其适合具备Matlab编程能力、熟悉时间序列建模与深度学习框架的研究者。; 使用场景及目标:①实现风电场短期功率高精度预测,支撑电网安全稳定调度与能量管理;②为深度学习模型结构设计与智能优化算法联合调参提供实践范例;③推动人工智能技术在可再生能源预测、智能电网运行等领域的落地应用。; 阅读建议:建议结合提供的Matlab代码深入理解CNN-BiGUR-Attention网络架构搭建、注意力机制实现方式及OOA优化流程,重点关注数据预处理、模型训练与参数调优细节,可通过替换不同风电数据集进行对比实验,进一步掌握模型迁移能力与适应性。

25,980

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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