从去年起我们的服务器偶尔会抛出OutOfMemoryException,即没有足够的内存继续执行程序时引发的异常。服务器内存加到4G也仍会出现该问题。软件是UO的第三方模拟器。事实上,从任务管理器里,可以看到软件占用了约1G左右的内存,当然因为GC的缘故,实际软件使用的内存在600M左右。为避免超过1G多内存的占用,并抛出Outofmemory异常,设定在内存占用到一定值时进行强制GC,一下子可以减去几百兆,但终究是没彻底解决问题。
最近国外论坛贴了相关处理方法,在此转述一遍,希望对遇到类似问题的朋友有帮助。
对于2G内存的服务器,.Net只能使用1.2G内存。
对于4G内存的服务器,.Net可使用2.4G内存。但系统需要进行如下设置:
1、 在boot.ini文件中增加/3GB的开关。
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(2)\WINNT
[operating systems]
multi(0)disk(0)rdisk(0)partition(2)\WINNT="????" /3GB
2、在命令行窗口,进入该目录,如 cd "C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin"
3、运行link命令: link -edit -LARGEADDRESSAWARE server.exe (server.exe为你的.Net程序)
4、你的server.exe就可以使用到2.4G内存了
.Net 1.2好像没解决这个问题,新的2.0还没空做测试,不知道2.0在内存管理和GC的性能上有无大的变化。
本文作者:佚名 来源:http://www.51one.net
CIO之家 www.ciozj.com 微信公众号:imciow
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。