ASP.NET中的OutOfMemoryException

原创 2005年05月24日 12:25:00
在博客园看到了一位园友写的文章《如何处理OutOfMemoryException异常?》,于是想和大家交流一下ASP.NET中出现OutOfMemoryException的问题。

实际上,在ASP.NET Web服务器上,ASP.NET所能够用到的内存,通常不会等同于所有的内存数量。在machine.config配置文件中,<processModel>中有一个属性“memoryLimit”,这个属性的值是一个百分值,默认为“60”,即指定了ASP.NET进程(在任务管理器中大家就可以看到ASP.NET的进程,IIS5中为aspnet_wpIIS6中为w3wp)能够使用所有物理内存的60%。当ASP.NET使用的内存量超过这个限额时,IIS会开始自动回收(recycle)进程,即创建一个新的进程去负责应付Http请求,而将旧进程所占用的内存回收。

当我们有一台很大内存的服务器时,“memoryLimit”这个值是需要进行适当的调整的。比如我们准备了一台4G内存的服务器,那么4G×60%2.4G。但是,对于Win32操作系统,一个进程所能占用的所有内存空间只有2G。当ASP.NET进程占用的内存开始达到2G时,由于它并没有达到2.4G回收阈值,所以IIS不会启动recycle进程操作,但是由于Win32的限制,实际上已经不能给这个进程分配更多的内存了,于是,OutOfMemoryException就很可能会被抛出了。为了避免这样的情况,我们就必须将“memoryLimit”适当调小,以让IIS更早的进行进程回收。

微软推荐的ASP.NET进程占用内存是不超过60%,并最好使计算出的实际值不超过800M。就是说,对于一台4G内存的服务器,最好将“memoryLimit”属性设置成“20”。设置一个适当的回收阈值,让IIS适时的进行进程回收,对于保证整个服务器的稳定运行,避免OutOfMemoryException是非常重要的。

IIS6中,ASP.NET进程的回收阈值不再由配置节中的“memoryLimit”属性决定,而是由IIS管理器中的应用程序池配置中的设置决定。

但是,即使正确设置了这些配置,也不能保证完全避免OutOfMemoryException的发生,原因可能是多样而复杂的,比如内存回收操作可能耗时太多等等。开发人员要注意的,就是在代码中时刻牢记不要无谓的使用和浪费内存。:)

如果你有一台大内存的服务器,同时对Win32操作系统中对于进程最高使用2G内存的限制很郁闷,可选的解决方法有两个:
1
、使用/3GB模式启动计算机,方法参加文后的链接
2
、使用Windows Server 2003 64bits Edition

ASP.NET 中关于 System.OutOfMemoryException 的问题与解决方法

  ASP.NET 中关于 System.OutOfMemoryException 的问题与解决方法 收藏之所以发生System.OutOfMemoryException这个问题,是因为多处理器(或多...
  • sscsgss
  • sscsgss
  • 2011年01月17日 14:42
  • 458

.Net 内存溢出(System.OutOfMemoryException)的常见情况和处理方式总结

在什么情况下会出现OutOfMemonryException呢? 在我们试图新建一个对象时,而垃圾收集器又找不到任何可用内存时被抛出,这种情况下我们是可以捕获该异常的; 另一种情况是,CLR需要内存时...

调试.NET程序OutOfMemoryException

问题简介  Out of memory异常是如何产生的   总的来说OutOfMemoryException会在两种情况下发生, 进程虚拟内存空间耗尽 系统物理内存耗尽 第...

.Net System.OutOfMemoryException

在什么情况下会出现OutOfMemonryException呢? 引>的话: 在我们试图新建一个对象时,而垃圾收集器又找不到任何可用内存时被抛出,这种情况下我们是可以捕获该异常的; 另一种情况是,CL...
  • jamex
  • jamex
  • 2012年03月06日 21:37
  • 1053

ASP.NET安全编程入门经典

原书名:Beginning ASP.NET Security 作者: (英)Barry Dorrans    译者: 臧国轻 出版社:清华大学出版社 ISBN:978730226374...

asp.net(C#)海量数据表高效率分页算法(易懂,不使用存储过程)

前台代码片段如下(webform8.aspx): WebForm8

使用ASP.NET Web Api构建基于REST风格的服务实战系列教程

最近发现web api很火,园内也有各种大神已经在研究,本人在asp.net官网上看到一个系列教程,原文地址:http://bitoftech.net/2013/11/25/detailed-tuto...

全开源ASP.NET工作流快速开发平台,你想要的强大工作流引擎就在这里!

现在办公要流程化,营销也有流程,流程现在已经是各种生活活动不可缺少的一部分了。就像这句耳熟能详的话:“凡事,我们先走个流程嘛!”,在信息化、流程化的背景下。工作流引擎,这个名词就出现了!那么,什么是工...

ASP.NET MVC 5 - (5)添加一个模型

http://www.asp.net/mvc/tutorials/mvc-5/introduction/adding-a-model http://www.cnblogs.com/lonelyxmas...
  • Lyncai
  • Lyncai
  • 2014年03月13日 20:58
  • 1371
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ASP.NET中的OutOfMemoryException
举报原因:
原因补充:

(最多只允许输入30个字)