caSTLe-windsor - 温莎堡什么时候会一次性发布?负担

标签 castle-windsor lifecycle transient

我们使用的是温莎城堡 2.1.0.6655。

我想对已解析的对象使用 transient 生命周期,但我想检查此版本的 CaSTLe 如何处理具有依赖项的 transient 。如果我使用即时窗口(Visual Studio),我可以看到解析、处置和最终释放的效果,并始终检查解析的对象是否被释放。

例如。

resolved = container.Resolve(Id);

container.Kernal.ReleasePolicy.HasTrack(resolved)
= true

resolved.Dispose()
container.Kernal.ReleasePolicy.HasTrack(resolved)
= true

container.release(resolved)
container.Kernal.ReleasePolicy.HasTrack(resolved)
= false

我担心的是,这些对象在请求之间会继续被跟踪,因为它们永远不会被释放,这意味着内存使用量继续上升。

我读到组件负担与此问题相关,但我无法准确找出 CaSTLe 2.0 及更高版本中的问题。

“发布”的困难在于解析的对象实际上是服务的一部分,它们的用途是提供 ORM 函数和映射。我不确定在这些情况下引用要释放的容器是否正确。

我想知道是否有一种方法可以让我查看容器在给定点引用了多少个对象,而不必使用内存分析器,因为我们没有可用的内存分析器。

我想我可以使用以下内容:

container.Kernel.GetHandlers()

使用我正在寻找的类型,看看跟踪的出现次数是否在增加?

最佳答案

2.1 版即将迎来四周年生日。我强烈建议您升级到3.1版本。

不仅因为 v2.1 不再受支持,而 v3.1 更新得多,修复了许多错误,而且它在跟踪方式上也有一些重大改进。

此外,在 v3.1 中,您将能够启用性能计数器,它将实时向您报告发布策略跟踪的实例数量。

解决您所提到的特定问题,这听起来像是一个旧的线程错误,已在某个地方得到修复。又一个升级的理由。

关于caSTLe-windsor - 温莎堡什么时候会一次性发布?负担,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13378228/

相关文章:

validation - Grails:自定义验证器中无法访问 transient 变量?

dependency-injection - 使用 CaSTLe Windsor 子容器来解析具有特定实例的类型

c# - 城堡记录设施

.net - 使用IOC将POCO作为Web服务公开-Spring.net的WebServiceExporter的替代产品?

javascript - 当屏幕出现时调用哪个生命周期事件?

java - Maven 多模块构建中的生命周期阶段

java - Gson反序列化和序列化 transient 字段

jakarta-ee - JPA 实体的 transient 字段是否需要并发同步?

c# - 为什么我的 WindsorContainer 不能解析 IWindsorContainer?