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