ASP.NET System.OutOfMemoryException

krp*_*sad 5 memory asp.net out-of-memory

这是Windows Server 2008 R2、64位,32GB RAM,我认为它运行的是IIS 7.5。我们将应用程序池设置为使用4个工作进程。

这是一个ASP.NET 4应用程序,但以32位兼容模式运行。

当内存使用量超过650-700MB /工作进程时,我们将收到oSystem.OutOfMemoryException。

我认为它应该能够处理2GB或至少1.5GB的数据而没有问题?

另一件事,当出现System.OutOfMemoryException时为什么不回收工作进程?

更新:此应用程序在带有IIS6.0的64位Windows Server 2003上可以正常运行。我已经看到它的最大内存使用量约为700mb / worker进程。

更新:占用大量内存的原因是使用DOM进行XML处理。我们将着手解决这个问题,但这是一项长期计划。我只是觉得奇怪,它不能超过650 mb。

Kna*_*ģis 4

更常见的原因是由于内存碎片——内存中System.OutOfMemoryException没有足够大的连续空间。您应该安装一个内存分析器来验证这一点 - 然后您还可以尝试找出哪些对象占用了内存。

如果可能,您可能想要测试 .NET 4.5 - Microsoft 已对垃圾收集器进行了更改,以便为服务器应用程序(例如 IIS)自动对 LOH 进行碎片整理: http: //blogs.msdn.com/b/dotnet/archive /2011/10/04/large-object-heap-improvements-in-net-4-5.aspx