C# winform程序 清除不掉datagridview占用的内存

for (int i = 0; i <= 100000; i++ )
{
Form2 form2 = new Form2();
form2.Show();
form2.Close();
form2.Dispose();
}

Form2中除了三个datagridview,其他什么都没有

3个回答

我的看法是你的程序在不停的跑,创建—>摧毁,但是在这个过程中已经发送了指令到内存,而且这个指令运行速度没有程序快导致了堆积,
所以内存越来越少(就像你不停的向内存两桶两桶的放水,但是内存只能一桶的输出,结果就会不平衡),
我之前生成随机数就是写入内存的速度没有程序跑的快,导致获取了5个一模一样的字符串(本来5个是不一样的)
所以程序的运行和电脑的实现是有时间差的,
你可以在for循环里设置一个延时看看效果

fight_in_dl
战在春秋 听上去很有道理,楼主可以试试。
2 年多之前 回复

内存一直在上涨,毫无办法

加入System.Threading.Thread.Sleep(10),就是每秒创建100次,内存任然持续上涨,只是比之前涨的慢。现在项目的问题是我的软件常年不关,
有一个按钮点击会创建DataGridView,将其注释掉之后就不会引发内存溢出,现在就是不明白为什么清理不掉DataGridView占用的内存,我还测试
过强行调用GC来清除,但还是不起作用。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐