Уже неделю как, борюсь с утечкой памяти в большом проекте. Авторов его рядом нет, так что на данном этапе не могу похвастать полным его знанием.
На mainForm открываются mdi-child`ы, в которых куча компонентов, в том числе и самописных. Многие эти компоненты криейтят DataSet — собственно потребитель большого кол-ва памяти. При закрытии child`а, память не освобождается. (стоит "Compuware DevPartner Studio", жму принудительных вызов GC). Dispose child`а вызывается, компонентов — вызываются (хотя, все, конечно, не проверил), эффект почти нулевой. Если в dispose этого child`а прибить все ссылки на низлежайшие компоненты — часть памяти освободиться, поэтому сделал вывод: где то остаётся ссылка на этот child (или есть еще варианты?). Вопрос — ГДЕ? Что еще можно посмотреть? И есть ли способ увидеть кто ссылается на данный обьект? Что то в DevPartner я не нашел такого, или плохо смотрел?
mdi мэнеджер смотрел — всё чисто.
Component container mainForm — чисто. (мало ли... совсем отчаялся =)
Статические переменные — проверил.
Единственно, что кажется несколько .. подозрительным(?), это создание этих child-форм активатором:
Form form = (Form)System.Activator.CreateInstance(formType)