I have an issue where the memory is not getting freed up in my .NET Core Web API. All I am doing is simply returning a string from a static class.
API:
[HttpGet]
public string Get()
{
return A.get();
}
public static class A
{
public static string get()
{
return "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
}
}
Client:
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);
}
}
I have tried returning the string directly from the action method without the static class. I have also tried to call the API from the client in synchronous fashion rather than async. None of these made any difference.
This screenshot shows that where GC is called once but does not help clear up the memory.
Here are the diagnostics after upgrading to 2.0 and disabling telemetry info: