ASP.NET Core应用程序中的内存泄漏

时间:2018-02-25 20:14:58

标签: c# asp.net-core .net-core

我在类中有两个类似的方法返回null。唯一不同的是他们接受的方法论据。

在这两种情况下,使用services.AddScoped<MyClass>();将包含以下方法实现的类添加到Startup类中的services集合中。容器负责创建类的实例,并相应地处理对象。

应用程序以90MB开始,没有任何初始请求(要监控的诊断工具)。

方法-1:150次/分钟没有内存泄漏。 (第一次请求增长到250MB,其余时间保持在那里。)

public Task<MyObject> DoNothing()
{
   return null;
}

方法-2:内存爬升,达到800 MB,每分钟150次。即使等待很长时间,内存使用量仍然在750MB左右。

public Task<MyObject> DoSomething(string args1,.....,string args10)
{
    return null;
}

根据我的分析,似乎是传递给Method-2的参数没有被处理,因此内存泄漏。由于现有的接口限制,我无法更改Method-2的签名。对于每个请求,传递给Method-2的参数的总大小约为1.25MB。

我还实现了IDisposable和Finalizer方法,并且每次调用覆盖Dispose方法(此处不在此处)。这可确保在每次请求后清理对象。

所以我的问题和我正在寻找的帮助是,如何确保包含Method-2的参数列表的HttpRequest被处理掉,以及如何解决此内存泄漏问题?

请查找源代码以及用于测试和加载测试的SOAP UI xml配置文件 here

0 个答案:

没有答案