我在类中有两个类似的方法返回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