2017-04-02 77 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的內存壓力應該發生並釋放它。不要關心它。長時間保持這種狀態是完全正常的。 –

相關問題