ASP .NET WebApi POST方法将请求主体保留在内存中

时间:2017-04-02 13:45:18

标签: c# http iis asp.net-web-api iis-7

我注意到我的服务器上有大量内存使用,所以当我检查它时,我看到IIS进程在收到一个请求后总是占用200-400兆字节的内存。经过一些检查后,我完全剥离了我的Web服务方法,问题仍然存在:

public IHttpActionResult Post([FromBody]JToken json)
{
return Ok();
}

通常到达的json非常大,但据我所知,WebApi应在返回Ok后处理它。这与IIS缓存或某种类型有关吗?

1 个答案:

答案 0 :(得分:1)

  

但据我所知,WebApi应该在返回Ok之后处理它。

这不一定是真的。 return Ok();json变量将超出范围后会发生什么。当变量超出范围时,它变得可以进行垃圾收集。这并不意味着将立即处置。它将在下一次GC发生时处理。例如,如果存在内存压力,可能会发生这种情况。这是CLR所关注的事情,你不应该太在意。让IIS中的工作进程占用一些内存是很正常的。在服务器操作系统上,GC已经过优化,只有在必要时才能运行以清理资源,以避免浪费宝贵的CPU周期。