如何突破.NET内存限制?

     我们现在的一个.NET应用程序需要用到2G左右的内存,当我们将这个程序放到有4G内存的服务器上运行时,就会抛出OutOfMemory异常。

     为了搞清楚抛出异常的原因,我写了个用于申请内存的测试程序,每次申请100M。运行这个测试程序,发现每次申请到1.2G时就会抛出OutOfMemory异常。

     我在网上找到了一篇文章,告诉如何突破1.2G内存:http://www.xker.com/page/e2007/0116/12771.html  其中的重点摘抄如下:

(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内存了

      按照文章所示的方法,我进行了试验,但是还是行不通,每次到1.2G就抛OutOfMemory异常。仔细看看那篇文章,作者使用的是.NET 1.1,而我们的程序是基于.NET 2.0的,有可能是这个方法对2.0不适用吧。

     不知道大家有碰到过类似的问题没有?有解决方案的请留言告诉一下,非常谢谢。

 

2009.01.06:最简单的方案就是大家建议的升级到64位,搞定噻,呵呵。

(1)在服务器上装64位的OS

(2)在服务器上装64位的.NET Framework

(3)应用程序不用重新编译,直接运行即可,JIT会自动生成针对64位的机器码。但如果你的应用程序中包含了下列因素,可能会出问题:浮点比较运算、二进制序列化、PInvoke等。

(4)如果应用程序有加密,要改用64位的加密工具:)

      

     

 

posted @   zhuweisky  阅读(4200)  评论(15编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
历史上的今天:
2006-01-05 .NET平台下可复用的Tcp通信层实现(续)
点击右上角即可分享
微信分享提示