我们使用的是温莎城堡 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()
使用我正在寻找的类型,查看跟踪的事件是否在增加?