中易网

C# 内存释放

答案:3  悬赏:40  
解决时间 2021-04-28 02:34
  • 提问者网友:践踏俘获
  • 2021-04-27 08:38
大哥,以下引用的是你8月12号的提问:
每隔一段的时间就 datagridview.rows.clear(),然后再用datagirdview.row.add添加数据。但是每次这样刷新后好像是内存不能够被释放,导致该程序的内存使用率越来越高,最后直至崩溃。

请问怎么将内存释放?

现在小弟我也遇到了这个问题,麻烦大哥帮帮忙,给点解决思路,谢谢了。
我现在只有20分,全给了。

我在程序中是这样操作的:
1。从串口接收8个字节的数据
2。把数据添加到DataGridView中
3。满20行数据后,清空表格中数据。
最佳答案
  • 二级知识专家网友:如果这是命
  • 2021-04-27 09:10
datagridview.rows.clear()
只是清除当前的datagridview的数据
并没有清除内存的功能
建议是你看看你的数据连接的时候有释放干净没。
------------------------------------------------
问题应该在你的窜口接受数据那个方法。
你优化一下吧!
全部回答
  • 1楼网友:duile
  • 2021-04-27 10:05
调用datagridview.rows.clear()以后 再调用一下GC.Collect(),手动让垃圾回收器回收一下试试
  • 2楼网友:无字情书
  • 2021-04-27 09:25
1、这个流程确实构造了许多新的对象(panel、bitmapimage、button),所以内存上涨是必然的; 2、其次,由于c#托管的原因,有些临时内存在频繁的循环中可能来不及释放,你可以在每次循环结束时调用gc.gettotalmemory( true )来强制回收当前的垃圾; 如果强制gc还不行的话,那说明你的代码就是要飚内存,那就得改你的流程了,没其他的办法了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息