如何处理我的应用程序异常使用内存?



我有一个托管在共享服务器上的ASP.NET MVC 3应用程序,具有以下限制:

  1. 100 MB RAM
  2. CPU的15%

主机管理员说,如果应用程序达到这些限制,应用程序池将重新启动。

部署后,我注意到应用程序池重新启动得太快(几分钟后)。我使用MonitorAspNetApplication检查内存使用情况。

在第一次加载时,分配的内存大约为8或9 MB,使用的内存大约是500或600 KB。

但是,当我开始使用应用程序(CRUD操作…)时,使用的内存会忽高忽低,但永远不会超过几(6-10)兆字节。但是分配的内存会逐渐增加,直到达到100MB,然后应用程序池会重置。

我不明白为什么会发生这种事。该应用程序不大,也不执行复杂的操作或繁重的查询。

我在这个项目中首先使用EF代码、StructureMap、AutoMapper和ELMAH。

  1. 出现此问题的可能原因是什么?如何检测和解决它们
  2. 这些工具(EF、StructureMap等)会导致这种内存使用吗
  3. 这是内存泄漏吗?或者它被称为其他东西

这是由于公共语言运行时的性质。当内存不足时,垃圾回收器会收集高阶生成,但当您的应用程序获得100MB内存时,系统中会有很多可用内存。您应该自己监控内存使用情况,并在使用量接近100MB时调用GC.Collect。

相关内容

最新更新