2017-04-02 31 views
0

我注意到我的服务器有很大的内存使用情况,所以当我检查它时,我看到IIS进程在接收到一个内存后总是需要200-400兆字节的内存请求。一番检查后,我完全剥离我的Web服务方法这一点,但问题依然存在:ASP .NET WebApi POST方法保持内存请求正文

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

通常到达json是相当大的,但据我所知,应该的WebAPI返回Ok后处置。这与IIS缓存或某种类型?

回答

1

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

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

+0

问题是,它长时间保持这种状态,并且其他服务也消耗内存,服务器开始口吃。 – user6251216

+0

一旦有GC的内存压力应该发生并释放它。不要关心它。长时间保持这种状态是完全正常的。 –

相关问题