加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 在ASP.NET MVC应用程序中使用Entity Framework和

发布时间:2020-12-16 09:21:10 所属栏目:asp.Net 来源:网络整理
导读:我无法让windsor容器和实体框架一起工作,这可能是由于我自己介绍的一个问题,但最终结果是我得到了可怕的内存泄漏. 我的应用程序设置了EDMX和存储库和服务,那些和objectcontext在我使用的windsor配置文件中设置为perwebrequest.但是,当我查看ANTS内存分析器中
我无法让windsor容器和实体框架一起工作,这可能是由于我自己介绍的一个问题,但最终结果是我得到了可怕的内存泄漏.

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

每个请求更多的动态代理都会卡在内存中.如果有其他人设法让自己陷入这样的泡菜中并且可以为我提供建议以摆脱它,我将不胜感激.

解决方法

通过将windsor容器的内核上的释放设置更改为:我已设法找到并解决问题:

_container.Kernel.ReleasePolicy = new NoTrackingReleasePolicy();

虽然windsor容器调用perwebrequest组件的dispose方法,但它仍然挂在它们的引用上,这防止它们被垃圾收集.

在这种情况下,它持有引用的对象是ObjectContext类型.不幸的是,尽管处理了这个对象,但是这个对象中缓存的所有动态代理仍然有效地意味着我的数据库的副本(或者至少我正在访问的部分)被添加到内存中,每个请求都会导致它增加.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读