最近我意识到我的基于 Owin 和 Autofac 的 Web API 应用程序存在泄漏。泄漏不是永久性的,但内存保留的时间比每个请求的时间长。这是交易:
1-)默认情况下,Web API 使用缓冲响应,并且运行时保持重叠数据即使在返回响应后,也可以将最多 40 个实例构造为对象池。 (我猜是出于性能原因)
2-) Each 重叠数据结构保持欧文语境活着(可能一次只有 40 个,用于池化)
3-)因为欧文语境还活着,相关的Autofac尽管容器本身已被释放,但每个请求范围的容器仍保持活动状态。
4-)即使Autofac容器被释放后,它将对象保存在其sharedInstances字典中。
因此内存泄漏。解决方法是使用流式传输而不是缓冲,这样就没有重叠数据。但我很好奇另一种解决方案。
另一个奇怪的事情是,如果 Autofac 容器被处置,它仍然将数据保留在其字典中。它应该将字典设置为 null!有任何想法吗 ?
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)