【发布时间】:2012-06-17 15:55:51
【问题描述】:
我在一个非常大的 ASP.NET 应用程序中遇到内存泄漏问题。使用大约 24 小时(有时更多)后,会引发 OutOfMemory 异常。因此,我试图了解托管内存在 .NET 中的工作原理。 ASP.NET 应用程序何时抛出 OutOfMemory 异常?服务器有很多 RAM,当抛出 OutOfMemory 异常时总是有足够的内存。我了解虚拟内存和物理内存之间的区别。在抛出 OutOfMemory 异常之前,W3WP 进程必须消耗多少内存?某处是否有设置,例如在 Machine.Config 文件中? ASP.NET 进程永远不会被回收。
【问题讨论】:
-
您的应用程序池定义了最大内存以及达到限制时触发的操作。因此,在那里寻找您的财产以采取短期行动。一般来说,您需要检查您初始化的代码并释放您使用的所有资源,以防止内存使用量永久增长。