我无法让windsor容器和实体框架一起工作,这可能是由于我自己介绍的一个问题,但最终结果是我得到了可怕的内存泄漏. 我的应用程序设置了EDMX和存储库和服务,那些和objectcontext在我使用
我的应用程序设置了EDMX和存储库和服务,那些和objectcontext在我使用的windsor配置文件中设置为perwebrequest.但是,当我查看ANTS内存分析器中的内存使用情况时,我发现尽管确认已调用Dispose,但仍然将对象上下文缓存保留为缓存的引用.
每个请求更多的动态代理都会卡在内存中.如果有其他人设法让自己陷入这样的泡菜中并且可以为我提供建议以摆脱它,我将不胜感激.
通过将windsor容器的内核上的释放设置更改为:我已设法找到并解决问题:_container.Kernel.ReleasePolicy = new NoTrackingReleasePolicy();
虽然windsor容器调用perwebrequest组件的dispose方法,但它仍然挂在它们的引用上,这防止它们被垃圾收集.
在这种情况下,它持有引用的对象是ObjectContext类型.不幸的是,尽管处理了这个对象,但是这个对象中缓存的所有动态代理仍然有效地意味着我的数据库的副本(或者至少我正在访问的部分)被添加到内存中,每个请求都会导致它增加.