[英]Memory not getting freed up in Asp.Net core api
我有一个问题,我的 .NET Core Web API 中的内存没有得到释放。 我所做的只是从静态类返回一个字符串。
应用程序接口:
[HttpGet]
public string Get()
{
return A.get();
}
public static class A
{
public static string get()
{
return "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
}
}
客户:
HttpClient hc = new HttpClient();
for(int i=0;i<100000;i++)
{
//var v = hc.GetAsync("http://localhost:52425/api/values").result;
hc.GetStringAsync("http://localhost:52425/api/values");
if(i%1000 == 0)
{
Thread.Sleep(10000);
Console.WriteLine("Sleeping-----------" + i);
}
}
我尝试直接从没有静态类的操作方法返回字符串。 我还尝试以同步方式而不是异步方式从客户端调用 API。 这些都没有任何区别。
这张截图显示了 GC 被调用一次但无助于清理内存的地方。
以下是升级到 2.0 并禁用遥测信息后的诊断信息:
即使您不使用 Application Insights,它似乎也在收集数据,因此您会看到内存增加。 一段时间后,这些对象由 GC 收集。
默认情况下,Visual Studio 会启用应用程序洞察。 有两个选项可以关闭 Application Insights:
TelemetryConfiguration.Active.DisableTelemetry = true;
到 ConfigureServices,您应该会看到性能改进。ASPNETCORE_preventHostingStartup
键:"environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development", "ASPNETCORE_preventHostingStartup": "True" }
这个可以潜在地关闭其他一些东西。 在此处阅读更多相关信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.