2

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

  1. 100 MB 内存
  2. 15% 的 CPU

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

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

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

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

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

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

  1. 这个问题的可能原因是什么?我怎样才能检测和解决它们?
  2. 这些工具(EF、StructureMap 等)会导致这种内存使用吗?
  3. 这是内存泄漏吗?或者它被称为别的东西?
4

1 回答 1

0

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

于 2012-12-08T06:54:28.823 回答