Недавно я заметил, что мое приложение использует память, которая никогда не освобождается. После профилирования с помощью CLRProfiler я обнаружил, что контейнер Castle Windsor, который я использую, удерживает объекты. Эти объекты объявлены с атрибутом lifestyle = "transient" в config xml.
Я обнаружил, что если я поставлю явный вызов IWindsorContainer.Release(hangingObject)
, он отбросит свои ссылки.
Это вызывает проблему, хотя я не ожидал, что с временным объектом жизни CastleWindsor сохранит ссылку и эффективно создаст утечку. Это будет довольно обыденная и подверженная ошибкам задача, заключающаяся во вставке явных вызовов Release во всех соответствующих местах.
Вы видели эту проблему, и есть ли у вас какие-либо предложения, как ее обойти?