Помогите разобраться с памятью
От: Вульфович Филипп  
Дата: 27.07.09 10:35
Оценка:
Пришел на работу программистом. В наследство досталось программа, написанная другим человеком на C#.
Программа — база данных на MS SQL 2000 cервере, уже написано много логики, переписать все с нуля нереально долго. Состоит из кучи форм, на которых поставлены датасеты, датаадаптеры и bindingsource. Каждая форма сама открывает connection, лезет в базу данных и загружает все данные (через методы адаптеров Fill) после окончания сохраняет данные (через методы адаптеров Update). Работает медленно, но хуже всего, что теряется память. Если раз 10-20 открыть и закрыть форму — диспетчер задач показывает что память растет. Иногда конечно происходит небольшой скачок вниз (может быть работает сборщик мусора), но в среднем память все равно увеличивается.
Поскольку это C# я никогда не освобождаю объекты, но я новичок в .Net, до этого работал много на Delphi. В Delphi освобождать объекты необходимо, но в C# я всегда думал, что с этим справится сборщик мусора. Может я жестоко ошибаюсь? Объем памяти при открытии программы 32 Мб, через час может достигать 200 Мб и больше. Пользователи жалуются что через несколько часов компьютер намертво подвисает и приходится перезагружать.

Пробовал в нескольких местах вставлять GC.Collect но это не помогает. Помогите, что делать?
Может быть надо везде освобождать объекты явно при закрытии формы? Или есть какой-то другой способ бороться с утечкой памяти.

Вульфович Филипп
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.