ASP.NET中的OutOfMemoryException
来源:互联网 发布:lr修图软件 编辑:程序博客网 时间:2024/05/16 16:57
在博客园看到了一位园友写的文章《如何处理OutOfMemoryException异常?》,于是想和大家交流一下ASP.NET中出现OutOfMemoryException的问题。
实际上,在ASP.NET Web服务器上,ASP.NET所能够用到的内存,通常不会等同于所有的内存数量。在machine.config配置文件中, 配置节<processModel>中有一个属性“memoryLimit”,这个属性的值是一个百分值,默认为“60”,即指定了ASP.NET进程(在任务管理器中大家就可以看到ASP.NET的进程,IIS5中为aspnet_wp,IIS6中为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 Web服务器上,ASP.NET所能够用到的内存,通常不会等同于所有的内存数量。在machine.config配置文件中,
当我们有一台很大内存的服务器时,“memoryLimit”这个值是需要进行适当的调整的。比如我们准备了一台
微软推荐的ASP.NET进程占用内存是不超过60%,并最好使计算出的实际值不超过
在IIS6中,ASP.NET进程的回收阈值不再由
但是,即使正确设置了这些配置,也不能保证完全避免OutOfMemoryException的发生,原因可能是多样而复杂的,比如内存回收操作可能耗时太多等等。开发人员要注意的,就是在代码中时刻牢记不要无谓的使用和浪费内存。:)
如果你有一台大内存的服务器,同时对Win32操作系统中对于进程最高使用
1、使用/3GB模式启动计算机,方法参加文后的链接
2、使用Windows Server 2003 64bits Edition
- ASP.NET中的OutOfMemoryException
- ASP.NET中的OutOfMemoryException
- ASP.NET中的OutOfMemoryException(from kaneboy)
- 解決 ASP.NET 中 System.OutOfMemoryException 的問題
- 解決 ASP.NET 中 System.OutOfMemoryException 的問題
- ASP.NET 中关于 System.OutOfMemoryException 的问题与解决方法
- ASP.NET 中关于 System.OutOfMemoryException 的问题与解决方法
- 解决 ASP.NET 中 System.OutOfMemoryException 的问题
- .net 中的bug:System.OutOfMemoryException At System.String.GetStringForStringBuilder
- .Net System.OutOfMemoryException
- 调试.NET程序OutOfMemoryException
- .Net 内存溢出(System.OutOfMemoryException
- .NET陷阱之奇怪的OutOfMemoryException
- .NET陷阱之奇怪的OutOfMemoryException
- .net 经常抛出OutOfMemoryException 服务器环境问题
- asp.net中的asp:RadioButtonList
- Asp.net中的线程
- ASP.NET中的ViewState
- rational工具的安装与配置(续)
- (五)
- 请大家牢记九句大实话
- 你O/R Mapping了吗?
- 很久以来的梦
- ASP.NET中的OutOfMemoryException
- 每天就是些简单的事情
- 选择合适的数据控件
- How to Use Design Patterns
- 近期学习Flex+Struts+Spring+Hibernate得心
- 新一代Java技术即将出现[转]
- More on Memory Usage 内存使用的问题
- nhibernate的 Quick Start(转载)
- 如何将FAT 分区转换为NTFS