Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Сборщик мусора


Автор: penguin 30.5.2006, 17:45
Делал на C# для универа простенькую нейронную сеть, и столкнулся с такой проблемой: при градиентном спуске получалось прилично итераций, нужно было сохранять результаты каждой итерации(хранил в оперативе), в итоге все начало тормозить, это в принципе нормально. После завершения проги тормоза не прекратились, видимо сборщик мусора накосячил. Так вот, вопрос, у меня платформа версии 2.0, кто нибудь такое встречал, и если кто знает в чем проблемы напишите.....
Кстати, прошу написать. что присходит когда первая под .NET прога запускается в некоторой ОС, и последняя выгружается. 

Автор: mr.DUDA 30.5.2006, 17:49
Ну, если твоя прога отъела всю физическую RAM, и пошла выделяться вирт. память из свопа, тогда конечно даже после закрытия некоторое время виндовоз будет ощутимо поскрипывать веником... Пока не соберёт память по кусочкам smile... А как бороться - можно например взять Memory Profiler и пройтись им в поисках самого большого количества подвисших объектов. Причин "съедания" памяти может быть куча: например, подписка на событие у большого кол-ва мелких объектов, перекрёстные ссылки между объектами, не освобождаются unmanaged ресурсы, да мало ли что... 

Автор: Prehistorik 31.5.2006, 08:27
Код

GC.Collect();


поможет... Но тоже надо с умом вызывать.... 

Автор: mr.DUDA 31.5.2006, 08:37
Цитата(Prehistorik @  31.5.2006,  07:27 Найти цитируемый пост)
GC.Collect();    

поможет... Но тоже надо с умом вызывать.... 

для "висячих" ссылок (2-е поколение) не поможет. 

Автор: ivashkanet 31.5.2006, 09:43
Цитата(mr.DUDA @  31.5.2006,  08:37 Найти цитируемый пост)
для "висячих" ссылок (2-е поколение) не поможет. 

Для них поможет 
Код

public static void GC.Collect(int generation)

genetation --- поколение ссылок 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)