我们正在编写一个诊断工具,需要一次运行多个小时,但是当应用程序运行了几个小时之后,我们尝试从CheckedListBox中删除项时,却遇到了一个神秘的内存不足异常。
我们最初尝试使用checkedListBox.Items.Clear();,在搜索了一些东西之后,我们尝试了下面这样的方法:
for (int i = checkedListBox.Items.Count - 1; i >= 0; i--)
{
checkedListBox.Items.RemoveAt(i);
}不幸的是,上述情况并没有解决这个问题。我在MSDN论坛上找到了这个想法,但是今天早上我再也找不到这个链接了。然而,该论坛确实说有人对他们的应用程序进行了剖析,并在CheckedListBox.Items.Clear()中发现了内存泄漏。
有人知道这附近有什么实用的工作吗?
编辑:FingerTheCat的答案暂时解决了我们的问题,所以我现在将它标记为答案。然而,我们已经开始对代码进行梳理,试图找到真正的问题。不幸的是,目前的实现主要是意大利面代码,所以我们可能要过几天才能找到任何东西。
发布于 2012-06-27 12:14:20
事实证明,有人在应用程序中留下了一段调试代码,这些代码在ArrayList中附加了相当冗长的日志信息,而没有清除它。该代码还将ArrayList的副本附加到自身中。忘了拿出来肯定不是件好事。
发布于 2012-06-22 14:44:31
我认为,最好的做法是在代码中的某些点调用GarbageCollector。只需在一些循环附近添加GC.Collect();它就可以解决内存问题。
https://stackoverflow.com/questions/11158326
复制相似问题