Списке checkedlistbox утечка памяти

мы пишем диагностический инструмент, который должен работать в течение многих часов одновременно, но мы сталкиваемся с загадочным исключением из памяти, когда мы пытаемся удалить элементы из CheckedListBox после запуска приложения в течение нескольких часов.

мы изначально пытались использовать checkedListBox.Items.Clear();, и после некоторого Googling вокруг, мы попробовали что-то вроде следующего вместо этого:

for (int i = checkedListBox.Items.Count - 1; i >= 0; i--)
{
   checkedListBox.Items.RemoveAt(i);
}

к сожалению, это не решить проблему. Я нашел эту идею на форумах MSDN , но я не могу, хоть убей, снова найти связь этим утром. Однако этот форум сказал, что кто-то профилировал свое приложение и обнаружил утечку памяти в CheckedListBox.Items.Clear().

кто-нибудь знает о функциональных обойти?

EDIT: ответ FingerTheCat имеет временно решил нашу проблему, поэтому я отмечу ее как ответ на данный момент. Тем не менее, мы начали прочесывать код, чтобы попытаться найти реальную проблему. К сожалению, текущая реализация-это в основном код спагетти, поэтому может пройти несколько дней, прежде чем мы что-либо найдем.

2 ответов


как оказалось, кто-то оставил часть кода отладки в приложении, которая добавляла довольно подробную информацию журнала в ArrayList не очищая ее. Этот код также добавлял копии ArrayList для себя. Определенно не очень хорошая вещь, чтобы забыть вынуть.


лучшее, что можно сделать, я думаю, это вызвать GarbageCollector в некоторых точках вашего кода. Просто добавьте GC.Collect (); рядом с некоторыми циклами, и это должно исправить вашу проблему с памятью.