最近我注意到我的应用程序似乎正在消耗永远不会被释放的内存。在使用 CLRProfiler 进行分析后,我发现我正在使用的 Castle Windsor 容器正在固定对象。这些对象在配置 xml 中使用 Lifestyle="transient" 属性声明。
我发现如果我明确调用IWindsorContainer.Release(hangingObject)
,它将删除它的引用。
虽然这会导致问题,但我没想到CastleWindsor 使用瞬态生活方式对象会保留引用并有效地造成泄漏。在所有适当的地方插入显式的 Release 调用将是一项相当平凡且容易出错的任务。
你有没有看到这个问题,你对如何解决这个问题有什么建议吗?