未处理的Microsoft DI Container _transientDisposables(内存泄漏)

问题描述 投票:0回答:1

我们将ASP.NET MS DI容器用于asp.net Sitecoer MVC CMS Web应用程序。

我们注意到在负载测试过程中内存迅速增长。在查看内存转储时,我注意到_transientDisposable持有太多IDisposable集合。 MS DI是否应在收集GC时处置这些收集?以下是容器注册。

enter image description here

我有的问题:

我所有的服务都已注册为SCOPED(根据请求)。>>

为什么ServiceProvider不处理IDosable集合。 MS Container是否应在请求结束时处置这些集合。

阅读这些主题,并没有太大的意义。是MS DI的错误还是我没有正确执行的操作:

https://github.com/aspnet/AspNetCore/issues/5496 https://github.com/aspnet/DependencyInjection/issues/456

我们正在为ASP.NET Sitecoer MVC CMS Web应用程序使用ASP.NET MS DI容器。我们注意到在负载测试期间内存迅速增长。在查看内存转储时,我注意到...

c# memory dependency-injection ioc-container
1个回答
2
投票

这可能是由您(或某些第三方)直接从根IServiceProvider解析对象图而不是从IServiceScope解析对象图引起的。一次性瞬变在示波器内部引用,因此可以在示波器结束时将其丢弃。但是,当您从根容器中进行解析时,根容器将变为范围

© www.soinside.com 2019 - 2024. All rights reserved.