我有一個網站項目設置,使用Visual Studio 2012中的IIS Express。啓動後,它慢慢地在我的開發計算機上佔用越來越多的內存。一旦我部署它,它似乎保持相當穩定。顯然有一個內存泄漏的地方,但因爲它似乎沒有發生在現場服務器我不太擔心它,(並經過幾天的嘗試調試它,我仍然沒有找到它。)如何限制IIS Express的內存使用量/強制應用程序池recyle
在我的開發計算機上,如果我忘了在一夜之間關閉它,它會吃掉我係統上的所有內存並開始分頁到磁盤。當我第二天早上進來時,甚至需要很長時間才能殺死它,因爲操作系統也被推入分頁內存,並且非常緩慢。
看着https://technet.microsoft.com/en-us/library/cc745955.aspx上的例子,我想我應該可以強制應用程序池在它碰到3gig使用級別時回收自身,以避免出現問題。
我已經到我的C:\ Users \用戶名\文檔\ IISExpress \設置\ ApplicationHost.config文件並替換第一個應用程序池的下面一節:
<add name="Clr4IntegratedAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true">
<recycling>
<periodicRestart privateMemory="600000">
<schedule>
<clear />
</schedule>
</periodicRestart>
</recycling>
</add>
不幸的是,當我的項目是快樂地運行它超過600,000KB的限制,我試圖在不重新啓動的情況下對它施加限制。我已經嘗試了內存和privateMemory屬性,都無法執行任何操作。
我的項目設置爲使用.NET v4.0集成模式,並通過與Microsoft.Web.Administration混淆我很確定我的配置更改正在調整正確的應用程序池,並且回收設置已加載到我的項目(但我對圖書館很陌生,所以我不完全確定)