Nov 12 2021 09:43 AM
Hi everyone,
I have a very simple MVC web api with a single controller that currently does nothing but returning a value. I am publishing it in VS2022 Preview 1 into a single file, so I get an .exe as an output. So far so good. That all seems to work fine.
I have a C++ application that is communicating with that Web API and is starting it in an own process. Basically my test is calling an endpoint of the API every 250ms and what I noticed is that this fills up my memory (slowly but constantly). Starting with 16MB, after an hour the processs has swallowed around 90MB of RAM.
Can anybody please tell me why is that? I am lost.
Here is the complete code of the Web API:
// My Controller
[ApiController]
[Route("[controller]")]
public class TestController : ControllerBase
{
// Calling this endpoint every 250ms from my C++ application via http
[HttpGet("buttonstate")]
public int GetButtonState([FromQuery] string path)
{
return 0;
}
}
// My startup class
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
// My program
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });
}
Nov 12 2021 07:59 PM
Nov 14 2021 06:03 AM
SolutionNov 15 2021 12:52 AM
Nov 15 2021 12:58 AM - edited Nov 15 2021 01:06 AM
Thanks. That was also my initial thought, so I was calling GC.Collect() at the end of each request (i.e. before return 0;), simply to force the gc to free all generations but...no change and no memory freed. RAM still piling up. 😕
It seems strange that this does not happen when running the API in debug mode from inside of VS. This gives me the impression that it might not be the API itself maybe? Maybe it's how I spawn the process (doing this from C++ via Qt and QProcess).
Nov 15 2021 01:16 AM
Nov 15 2021 01:36 AM
Nov 14 2021 06:03 AM
Solution