我注意到我的服务器上有大量内存使用,所以当我检查它时,我看到IIS进程在收到一个请求后总是占用200-400兆字节的内存。经过一些检查后,我完全剥离了我的Web服务方法,问题仍然存在:
public IHttpActionResult Post([FromBody]JToken json)
{
return Ok();
}
通常到达的json
非常大,但据我所知,WebApi应在返回Ok
后处理它。这与IIS缓存或某种类型有关吗?
答案 0 :(得分:1)
但据我所知,WebApi应该在返回Ok之后处理它。
这不一定是真的。 return Ok();
后json
变量将超出范围后会发生什么。当变量超出范围时,它变得可以进行垃圾收集。这并不意味着将立即处置。它将在下一次GC发生时处理。例如,如果存在内存压力,可能会发生这种情况。这是CLR所关注的事情,你不应该太在意。让IIS中的工作进程占用一些内存是很正常的。在服务器操作系统上,GC已经过优化,只有在必要时才能运行以清理资源,以避免浪费宝贵的CPU周期。