【问题标题】:How to deal with my application's unusual usage of memory?如何处理我的应用程序异常使用内存?
【发布时间】:2012-12-08 06:04:52
【问题描述】:

我有一个托管在共享服务器上的 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. 这是内存泄漏吗?还是叫别的?

【问题讨论】:

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


【解决方案1】:

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

【讨论】:

  • 你的意思是3分钟达到100毫克是正常的?我不应该为此感到难过吗?
  • 如果你需要减少内存使用,你应该使用内存分析器来发现什么在使用内存。
猜你喜欢
  • 1970-01-01
  • 2012-05-01
  • 2014-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-22
  • 1970-01-01
相关资源
最近更新 更多