前几天我注意到,在我的服务器上运行的所有w3wp.exe似乎消耗的RAM比我预期的要多。所以我创建了测试Web应用程序,其中包含一个aspx页面,然后是一个vanilla global.asax页面(默认方法,没有其他代码)。然后,我将该站点部署到IIS6,其目标框架为4.0,内置于发布模式,调试设置为“false”。该站点也在其自己的应用程序池下设置。然后我使用issapp.vbs来确定运行此测试站点的w3wp.exe。我惊讶地看到有1页的单个站点使用了近40mb的ram。
对于单页网站来说,40mb的RAM似乎很多。这是正常的,如果是这样,为什么?我有什么办法可以减少内存占用吗?我还注意到,每次刷新默认页面时,w3wp.exe都会增长一点。 IIS6一遍又一遍地缓存同一页吗?
答案 0 :(得分:1)
单个AppDomain的40Mb(无论您有多少页面)都没问题。考虑到.NET是一个托管环境,而应用程序池包含大部分用于提供请求的逻辑和堆。在许多情况下,如果RAM没有争用(系统的其他部分需要),它也不会那么急于释放RAM。 您可以在不同的网站之间共享应用程序池,并且沙箱的“开销”与您对可接受的内容的感知不成比例。但是,我认为这根本不是坏事。
答案 1 :(得分:0)
您正在尝试优化没有负载且没有客户端的情况。这真的不明智。优化实际用例。
您没有建立工厂,然后尝试让它尽可能高效地制作一个项目。你试图通过几十个来有效地驱逐它们。
答案 2 :(得分:0)
这不是一个真正的问题,因为它很正常。您的.NET Framework正在加载,因此大小。当出现真正的问题时,您必须使用某些后期制作或分析工具来修复它。分享一些内存和后期制作调试的文章,以备将来需要时使用。
http://msdn.microsoft.com/en-us/magazine/cc188781.aspx http://aspalliance.com/1350_Post_Production_Debugging_for_ASPNET_Applications__Part_1.all http://blogs.msdn.com/b/tess/archive/2006/09/06/net-memory-usage-a-restaurant-analogy.aspx http://blogs.msdn.com/b/tess/archive/2008/09/12/asp-net-memory-issues-high-memory-usage-with-ajaxpro.aspx