gpt4 book ai didi

c# - MVCApplication 中对 IoC 容器的静态引用会导致内存泄漏吗?

转载 作者:行者123 更新时间:2023-11-30 22:32:30 26 4
gpt4 key购买 nike

我在 ASP.Net MVC 3 应用程序中遇到内存泄漏,我怀疑这可能是 IoC 容器的问题。

MvcApplication 创建一个 WindsorContainer 对象,填充它,然后将其存储在静态字段中,如下所示:

public class MvcApplication : System.Web.HttpApplication, IContainerAccessor
{
private static WindsorContainer container;

protected void Application_Start()
{
ControllerBuilder.Current.SetControllerFactory(
new WindsorControllerFactory(container));
}
}

这里在静态字段中持有容器是否正确?据我了解,容器本身只需要与 MVCApplication 本身一样长。将它设为静态只会在多个 MVCApplication 实例之间共享它,所以我想知道它是否被错误处理。

最佳答案

使用 CaSTLe Windsor 时,请务必遵循 Register Resolve Release模式,因为容器本身可能会跟踪一次性对象(以便能够处理它们)。

对于 ASP.NET MVC,这意味着 ControllerFactory 应该从 ReleaseController 调用 Release。此答案包含更多解释:Explain the mysterious world of IoC and automatic Dispose

您可能还想在 MvcApplication 处置时处置容器本身......

关于c# - MVCApplication 中对 IoC 容器的静态引用会导致内存泄漏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8712741/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com