【发布时间】:2012-11-02 21:56:11
【问题描述】:
我们使用的是温莎城堡 2.1.0.6655。
我想为已解析的对象使用瞬态生命周期,但我想检查此版本的 Castle 如何处理具有依赖关系的瞬态。如果我使用我的即时窗口(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
我担心这些对象在请求之间会继续被跟踪,因为它们永远不会被释放,这意味着内存使用量会继续上升。
我已经读到 Component Burden 与此问题有关,但我无法确切了解 Castle 2.0 及更高版本中的具体情况。
“释放”的困难在于解析的对象实际上是服务的一部分,它们的用途是提供 ORM 函数和映射。我不确定在这些情况下引用要释放的容器是否正确。
我想知道是否有办法让我查看容器在给定点引用了多少对象,而不必使用内存分析器,因为我们没有可用的。
我想我可以使用以下内容:
container.Kernel.GetHandlers()
使用我正在寻找的类型,查看跟踪的事件是否在增加?
【问题讨论】:
标签: castle-windsor lifecycle transient