找回密码
 注册账号

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

初学者课程:T3自学|T6自学|U8自学软件下载课件下载工具下载资料:通资料|U8资料|NC|培训|年结积分规则 | 使用常见问题Q&A
知识库:U8 | | NC | U9 | OA | 政务U8|U9|NCC|NC65|NC65客开|NCC客开新手必读 | 任务 | 快速增金币用友QQ群[微信群]
查看: 17459|回复: 2

查询时报“发生类型为System.OutOfMemoryException的异常”

[复制链接]
发表于 2009-2-5 01:54:51 | 显示全部楼层 |阅读模式
U8知识库
问题号: 10457
解决状态: 临时解决方案
软件版本: 8.52
软件模块: 销售管理
行业: 通用
关键字: 日常操作
适用产品: U860----生产制造--生产订单
问题名称: 查询时报“发生类型为System.OutOfMemoryException的异常”
问题现象: 现查询生产订单缺料明细表,会报错,“发生类型为System.OutOfMemoryException的异常”。原出现此现象需重启服务器可解决,但现在此种方法已无法解决。 其服务器情况:至强双CPU,硬盘280G,内存2G。 在本地应用客户数据做测试的时候,发现当查询缺料表的条件中将未审核、锁定、已审核选择为是的时候,会发生内存分配错误。
问题原因: ??在ASP.NET Web(U8Soft.AppServer)服务器上,ASP.NET所能够用到的内存,通常不会等同于所有的内存数量。在machine.config配置文件(目录)中,配置节中有一个属性“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的发生,原因可能是多样而复杂的,比如内存回收操作可能耗时太多等等。开发人员要注意的,就是在代码中时刻牢记不要无谓的使用和浪费内存。??
解决方案: 在执行查询的过程中,由于一次查询的资料量过大,而导致IIS使用的内存过多,超过Win32程序允许使用的内存数量,请适当的修改查询范围进行查询。 ??如果你有一台大内存的服务器,同时对Win32操作系统中对于进程最高使用2G内存的限制很郁闷,可选的解决方法有两个: 1、使用/3GB模式启动计算机(只适用于XP和2003操作系统)。在boot.ini文件中做如下设置 [boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(1)\WINNT [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2003 Server" /3GB 2、使用Windows Server 2003 64bits Edition
补丁编号:
录入日期: 2005-11-1
最后更新时间:

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册账号

×
现查询生产订单缺料明细表,会报错,“发生类型为System.OutOfMemoryException的异常”。原出现此现象需重启服务器可解决,但现在此种方法已无法解决。 其服务器情况:至强双CPU,硬盘280G,内存2G。 在本地应用客户数据做测试的时候,发现当查询缺料表的条件中将未审核、锁定、已审核选择为是的时候,会发生内存分配错误。
发表于 2009-9-16 10:16:20 | 显示全部楼层
很好很强大!
发表于 2009-9-21 17:03:27 | 显示全部楼层
2# qq36261717
很好
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|站长微信|Archiver|手机版|小黑屋|用友之家 ( 蜀ICP备07505338号|51072502110008 )

GMT+8, 2024-11-24 09:06 , Processed in 0.072277 second(s), 12 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表