Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 在ASP.NET MVC应用程序中使用实体框架和Windsor时内存泄漏_Asp.net Mvc_Entity Framework_Castle Windsor - Fatal编程技术网

Asp.net mvc 在ASP.NET MVC应用程序中使用实体框架和Windsor时内存泄漏

Asp.net mvc 在ASP.NET MVC应用程序中使用实体框架和Windsor时内存泄漏,asp.net-mvc,entity-framework,castle-windsor,Asp.net Mvc,Entity Framework,Castle Windsor,我很难让windsor容器和实体框架一起工作,这可能是由于我自己介绍的一个问题造成的,但最终的结果是导致了严重的内存泄漏 我用EDMX和存储库和服务设置了我的应用程序,这些存储库和服务以及objectcontext在我使用的windsor配置文件中设置为perwebrequest。但是,当我查看ANTS memory profiler中的内存使用情况时,我发现尽管确认已调用Dispose,但对象上下文缓存仍作为缓存的引用保留在内存中 每一个请求都会有更多的动态代理卡在内存中。如果其他任何人已经设

我很难让windsor容器和实体框架一起工作,这可能是由于我自己介绍的一个问题造成的,但最终的结果是导致了严重的内存泄漏

我用EDMX和存储库和服务设置了我的应用程序,这些存储库和服务以及objectcontext在我使用的windsor配置文件中设置为perwebrequest。但是,当我查看ANTS memory profiler中的内存使用情况时,我发现尽管确认已调用Dispose,但对象上下文缓存仍作为缓存的引用保留在内存中


每一个请求都会有更多的动态代理卡在内存中。如果其他任何人已经设法让自己陷入这样的困境,并能给我建议摆脱困境,我们将不胜感激。

您可能没有正确处理对象。尝试使用“使用”块


如果看不到代码,我无法说更多。

我已通过将windsor容器内核上的发布设置更改为:

_container.Kernel.ReleasePolicy = new NoTrackingReleasePolicy();
看起来,尽管windsor容器调用perwebrequest组件的dispose方法,但它仍然挂起这些组件的引用,从而防止它们被垃圾收集


在本例中,它持有引用的对象是ObjectContext类型。不幸的是,尽管处理了该对象,但缓存在该对象中的所有动态代理仍然有效地保留着,这意味着每次请求都会向内存中添加一份数据库副本(或至少是我正在访问的部分),从而导致其爬升。

我也遇到了同样的问题

经过调查,我似乎错过了对控制器工厂中的_container.Release(controller)的调用:

    public override void ReleaseController(IController controller)
    {
        _container.Release(controller);

        var disposable = controller as IDisposable;
        if (disposable != null)
        {
            disposable.Dispose();
        }
    }
然而,我也使用了Windsor 2.1并添加了_container.Release(controller)并没有为我做任何事情

升级到v3.1后,它似乎可以工作

希望这有帮助


p、 美国蚂蚁记忆档案器-救生员

显示代码。如何管理上下文生存期?