我们遇到了一个奇怪的问题。我们的 ASP.NET 应用程序在具有 16Gb RAM 的 64 位 Windows 2008/IIS7 机器上运行。当 w3wp.exe 进程达到 4Gb 时(我们通过服务器上的任务管理器简单地跟踪它) -即使仍有大量可用内存,也会引发内存不足异常。
是否存在已知问题是 ASP.NET 进程在 64 位系统(并使用 64 位应用程序池)上限制为 4Gb 内存?
有没有办法解除这个限制?
我们遇到了一个奇怪的问题。我们的 ASP.NET 应用程序在具有 16Gb RAM 的 64 位 Windows 2008/IIS7 机器上运行。当 w3wp.exe 进程达到 4Gb 时(我们通过服务器上的任务管理器简单地跟踪它) -即使仍有大量可用内存,也会引发内存不足异常。
是否存在已知问题是 ASP.NET 进程在 64 位系统(并使用 64 位应用程序池)上限制为 4Gb 内存?
有没有办法解除这个限制?
听起来你在某处有一个未处理的资源最终会被垃圾收集起来,但速度不足以满足你的需求。您是否重用任何 SQLConnection 对象?还是 MailClient 对象?还是非托管的 Image 对象?
至于低于预期的内存限制,ASP.NET 应用程序使用两种类型的内存。一个是保留内存,另一个是实际使用的内存。我相信任务管理器会跟踪实际内存使用情况,但保留的内存可能也有限制。要了解您的进程占用了多少保留内存,请转到 IIS7,单击服务器(顶层,在应用程序池和站点文件夹上方),然后单击进程选项,然后单击应用程序的进程。它应该向您显示 CPU 使用情况、请求数量和内存使用情况(保留的和实际的)。