【发布时间】:2011-10-23 21:07:48
【问题描述】:
我来自 StructureMap 世界,在这里永远不需要释放已解析的瞬态对象。
我看到 Windsor 默认跟踪任何已解析的瞬态对象,因此在它们被释放(如果它们曾经被释放)之前,它们不会被垃圾收集。
我在文档中找到了 NoTrackingReleasePolicy,但它的用法是 discouraged。
必须释放任何瞬态对象对我来说似乎回到了过去。
我将在我的应用中使用 NoTrackingReleasePolicy。
这样做会给我带来什么麻烦?或者换句话说,为什么我要手动释放对象而不是让垃圾收集器为我处理?
【问题讨论】:
-
我建议在对此做出任何决定之前阅读devlicio.us/blogs/krzysztof_kozmic/archive/2010/08/27/…。简而言之:如果您不得不为此担心太多,那么您使用容器的方式是错误的(无论是 StructureMap、Windsor 还是任何其他容器)。
-
@Mauricio,感谢您的链接。读起来很有趣。就我而言,我是在 asp.net mvc 应用程序的上下文中工作的,所以我似乎不需要手动释放控制器中的任何依赖项。我想知道它如何与我们也大量使用的 Wcf Web Api 一起工作。我认为服务类不会自动化。当网络请求结束时被释放。必须对此进行调查。
-
WCF 工具会这样做:github.com/castleproject/Windsor/tree/master/Facilities/… 不知道具体的 WebAPI。
标签: castle-windsor