【发布时间】:2013-11-27 20:33:24
【问题描述】:
我正在使用 Castle Windsor 和 DynamicProxy 从头开始实现持久性延迟加载(我知道 NHibernate 可能是一个选项等)我已经实现了一个自定义组件激活器来始终将我的业务类实例化为代理。
我对组件激活器的生活方式有疑问 (What is the expected LifeStyle of a Castle Windsor component activator?)。 Krzysztof Kozmic 友好地回答说“Windsor 中的每个组件都会有自己的激活器实例”。
面对我的应用程序中的大内存泄漏,我发现永远不会调用此类中的显式析构函数(至少在我的情况下)。 Castle 是否适当地释放了激活器,即在类型工厂被处置时?
Classes
.FromAssemblyContaining(typeof(QuantityType))
.InNamespace(typeof(QuantityType).Namespace)
.WithService.DefaultInterfaces()
.Configure(reg => { reg.Activator<ColMsProxyComponentActivator>(); })
.LifestyleTransient() // We really want new entities every time a new one is requested
顺便说一句,能够显式声明组件激活器的生活方式不是很有用吗?在我的情况下,它没有理由不能是单例,这样可以节省一些内存和处理。
【问题讨论】:
标签: components castle-windsor memory-leaks castle activator