Возможно, у вас есть управляемый эквивалент утечки памяти. Поддерживаете ли вы устаревшие ссылки на эти объекты (то есть, у вас есть List<T>
или какой-либо другой объект, который отслеживает эти узлы)?
Является ли подписка на событие объекта, который не выходит за рамки? Ссылка на подписчика на событие сохраняется, поэтому, если вы не отсоедините его, ваши объекты останутся живыми.
Вы также можете забыть Dispose
объектов, которые реализуют IDisposable
. Не могу сказать, не увидев ваш код.
Точное поведение GC определяется реализацией. Вы должны разработать свое приложение так, чтобы оно не имело значения. Если вам нужно детерминированное управление памятью, значит, вы используете не тот язык. Используйте инструмент (подойдет профилировщик ANTS от RedGate), чтобы узнать, не пропускаете ли вы где-нибудь ссылки.