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

时间:2012-12-08 06:04:53

标签: asp.net asp.net-mvc-3 memory-management memory-leaks application-pool

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

  1. 100 MB RAM
  2. 15%的CPU
  3. 主机管理员说如果应用程序达到这些限制,应用程序池将重新启动。

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

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

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

    我无法弄清楚为什么会这样。应用程序并不大,它不会执行复杂的操作或繁重的查询。

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

    1. 这个问题的可能原因是什么?我怎样才能发现并解决它们?
    2. 这些工具(EF,StructureMap等)能否导致此内存使用?
    3. 这是内存泄漏吗?或者它被称为其他东西?

1 个答案:

答案 0 :(得分:0)

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