Asp.net 应用程序池回收中的内存增加

Asp.net 应用程序池回收中的内存增加,asp.net,memory,recycle,Asp.net,Memory,Recycle,我想描述一下我在生产中分析asp.net应用程序时注意到的奇怪问题,并就以下问题征求一些建议或意见 应用程序通常运行时占用大约80-90MB的内存。这似乎是稳定的,因为到目前为止还没有检测到内存泄漏-随着时间的推移,内存使用没有轻微增加。然而,当应用程序池回收时就会出现问题(我使用的是共享主机,从日志判断,当应用程序空闲20分钟或每隔30小时出现一次——类似的情况)。问题是,在循环使用的一段时间内,使用的内存几乎翻了一番——在没有任何解释的情况下,它会达到160-170 MB。这是令人困惑的,因

我想描述一下我在生产中分析asp.net应用程序时注意到的奇怪问题,并就以下问题征求一些建议或意见

应用程序通常运行时占用大约80-90MB的内存。这似乎是稳定的,因为到目前为止还没有检测到内存泄漏-随着时间的推移,内存使用没有轻微增加。然而,当应用程序池回收时就会出现问题(我使用的是共享主机,从日志判断,当应用程序空闲20分钟或每隔30小时出现一次——类似的情况)。问题是,在循环使用的一段时间内,使用的内存几乎翻了一番——在没有任何解释的情况下,它会达到160-170 MB。这是令人困惑的,因为循环利用应该清除内存和所有其他资源是常见的说法——至少我是这样理解的。系统将这个内存量保持7-8个小时,然后内存使用率又降到了通常的90-100MB,而且没有明显的原因(至少我不知道)。一直以来,应用程序都运行良好——没有明显的延迟或网站可用性方面的问题——对用户来说,一切似乎都正常,到目前为止没有任何投诉。当查看随时间变化的内存消耗图时,它看起来几乎像一个阶跃函数

重要的是,我无法在测试环境中重现这种行为。偶尔,我会从提供商管理员那里得到一些提示,说我的应用程序使用的资源超出了允许的范围,这让我很恼火

所以,我想知道的是,是否存在应用程序池回收不会释放所有内存资源的可能情况?有什么建议或指导方针是我应该关注的吗?我不是这方面的专家,但我一直在阅读关于重复回收、回收上的序列化问题以及其他一些问题的书籍。。。有什么想法吗?类似的经历


谢谢

这篇文章很好地概括了当你的网站的应用程序池被回收时会发生什么:

我的猜测是,由于每次循环应用程序池之后都会进行JIT编译,因此内存使用量正在增加。我猜您的共享主机的配置和环境设置与您的开发服务器不同


IMHO,如果您在共享主机上使用了约100兆的内存,那么如果是DiscountASP.NET或GoDaddy这样的主机,您就是在自找麻烦。如果你真的关心这个网站,那就去找一个VPS或一些更可配置的主机,在那里你可以为更高的内存限制支付额外费用。

回收应用程序池不会进行JIT编译。相反,如果有重新编译,它将回收应用程序池。