簡體   English   中英

我應該將ASP.NET應用程序池設置為自動回收嗎?

[英]Should I set ASP.NET application pool to auto-recycle?

我有許多ASP.NET(4.0)Web應用程序,在每個請求期間似乎泄漏(少量)內存。 這是一個很小的數量,對於大多數用例來說,它不會成長為幾周甚至幾個月的問題。 我通常會嘗試關閉應用程序管理的任何連接,避免使用狀態變量(或我的單例的實例變量)等。

我的問題是 - 這是ASP.NET應用程序的正常行為嗎? 我已經關閉了在閑置20分鍾后回收應用程序池的默認(IIS 7)行為。 我這樣做是因為應用程序需要幾分鍾來構建其內部緩存,我希望避免對用戶體驗產生負面影響(讓他們在發出請求時等待應用程序啟動)。

我知道這可以通過序列化緩存或加快緩存生成過程來緩解,但我的問題更多地與它的原理有關:我個人認為依賴於IIS自動回收功能作為一種綁定方法。 我錯了嗎? 我只是沒有看到垃圾收集器在工作,因為應用程序的內存使用量與可用內存量相比不夠高? 還是我應該深入研究記憶問題?

任何見解將不勝感激。

不幸的是,這正常的,但大部分都應該偽劣的應用程序編寫者而不是其他任何東西。

默認情況下,IIS會將新創建的應用程序池配置為每1740分鍾回收一次。

正如你所說,這是一個創可貼。 一個編寫良好的應用程序可以清除所有資源(包括懸空事件處理程序),根本不應該泄漏。

請參閱博客文章,了解該主題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM