如何突破.NET内存限制?

简介: 我们现在的一个.NET应用程序需要用到2G左右的内存,当我们将这个程序放到有4G内存的服务器上运行时,就会抛出OutOfMemory异常。      为了搞清楚抛出异常的原因,我写了个用于申请内存的测试程序,每次申请100M。

     我们现在的一个.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位的加密工具:)

      

     

 

目录
相关文章
|
开发框架 算法 .NET
一个简单高效低内存的.NET操作Excel开源框架 - MiniExcel
一个简单高效低内存的.NET操作Excel开源框架 - MiniExcel
155 0
|
3月前
|
存储 开发框架 .NET
"揭秘.NET内存奥秘:从CIL深处窥探值类型与引用类型的生死较量,一场关于速度与空间的激情大戏!"
【8月更文挑战第16天】在.NET框架中,通过CIL(公共中间语言)可以深入了解值类型与引用类型的内存分配机制。值类型如`int`和`double`直接在方法调用堆栈上分配,访问迅速,生命周期随栈帧销毁而结束。引用类型如`string`在托管堆上分配,堆栈上仅存储引用,CLR负责垃圾回收,确保高效且自动化的内存管理。
55 6
|
24天前
|
数据库连接 开发者
.NET 内存管理两种有效的资源释放方式
【10月更文挑战第15天】在.NET中,有两种有效的资源释放方式:一是使用`using`语句,适用于实现`IDisposable`接口的对象,如文件流、数据库连接等,能确保资源及时释放,避免泄漏;二是手动调用`Dispose`方法并处理异常,提供更灵活的资源管理方式,适用于复杂场景。这两种方式都能有效管理资源,提高应用性能和稳定性。
|
25天前
|
算法 Java 数据库连接
.NET 内存管理两种有效的资源释放方式
【10月更文挑战第14天】在 .NET 中,`IDisposable` 接口提供了一种标准机制来释放非托管资源,如文件句柄、数据库连接等。此类资源需手动释放以避免泄漏。实现 `IDisposable` 的类可通过 `Dispose` 方法释放资源。使用 `using` 语句可确保资源自动释放。此外,.NET 的垃圾回收器会自动回收托管对象所占内存,提高程序效率。示例代码展示了如何使用 `MyFileHandler` 类处理文件操作并释放 `FileStream` 资源。
|
2月前
|
存储 运维
.NET开发必备技巧:使用Visual Studio分析.NET Dump,快速查找程序内存泄漏问题!
.NET开发必备技巧:使用Visual Studio分析.NET Dump,快速查找程序内存泄漏问题!
|
3月前
|
缓存 程序员
封装一个给 .NET Framework 用的内存缓存帮助类
封装一个给 .NET Framework 用的内存缓存帮助类
|
3月前
|
缓存 开发框架 .NET
看看 Asp.net core Webapi 项目如何优雅地使用内存缓存
看看 Asp.net core Webapi 项目如何优雅地使用内存缓存
|
3月前
|
开发框架 监控 .NET
|
12月前
|
缓存 开发框架 算法
.NET操作Excel高效低内存的开源框架 - MiniExcel
.NET操作Excel高效低内存的开源框架 - MiniExcel
121 0
.NET操作Excel高效低内存的开源框架 - MiniExcel