.net Winform 32位桌面应用程序突破系统2G内存限制,解决内存溢出问题


.net Winform 32位桌面应用程序突破系统2G内存限制,解决内存溢出问题

32程序的内存地址空间只有2G,这2G内存除了存储程序数据外还需要存储程序本身,程序一旦使用超过1G的内存就不太稳定。

出现内存溢出的报错:System.OutOfMemoryException:引发类型为“System.OutOfMemoryException”的异常,而且winform控件用的是devexpress,表现出的是大红叉

解决方案:

如果在不动代码的情况下,我们可以通过配置开启/largeaddressaware去突破2G的限制,但是32位程序最大也就是到4G(虚拟地址)

有两种方法:

第一种是在vs32位程序控制台执行以下命令(这种比较麻烦,每次编译完成后,都需要去手动执行):

 

执行命令:editbin/largeaddressaware 主程序路径

 

 

 

 

 执行成功

第二种是在vs开发工具的项目属性->生成事件->后期生成事件命令行中设置如下命令行(相对于第一种比较容易,配置好,编译完成后自动执行,方便):

call "%VS110COMNTOOLS%..\..\VC\bin\vcvars32.bat"
editbin /largeaddressaware $(TargetPath)

 

如果可以改成anycpu或者x64位程序,当时是最好的,但是由于受部分32位组件的影响,目前只是把32位程序的内存进行了扩大解决,如果超过4G依然会内存溢出,所以接下来还是需要从代码上也进行优化,有条件最好也改成anycpu或x64。

如果大家有更好的方案和建议,可以评论区留言,互相交流!


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM