我有一个网站项目设置,使用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混淆我很确定我的配置更改正在调整正确的应用程序池,并且回收设置已加载到我的项目(但我对图书馆很陌生,所以我不完全确定)