Csharp/C#教程:使用VS2010编译时,仅在发布模式下OutOfMemoryException?分享


使用VS2010编译时,仅在发布模式下OutOfMemoryException?

我的程序仅在Release模式下生成OutOfMemoryExcetion ,使用VS2010 C#编译器进行编译。 发生崩溃时它正在执行的操作是实例化1600个锯齿状数组,并且在下面循环的简化版本的第207个时它崩溃了:

 Double[][] arr = new Double[1600][]; int i = 0; while (i < 1600) { arr[i] = new Double[1000000]; i++; } 

基本上,只要这部分代码生成~11.9 GB,考虑到Double消耗8个字节。 我没有那么多的RAM,但在另一个问题中我询问当RAM结束时会发生什么 ,他们回答我CLR创建了一个交换内存,尽管它只能解决明确定义的内存量。

当我在DEBUG模式下编译程序时,它不会抛出OutOfMemoryException ,相反,它会分配大量内存并保持程序运行…我没有足够的耐心检查程序是否运行顺畅,尽管慢慢地,直到最后,因为它花了太长时间。

所以:

假设您在Visual Studio 2010中创建了项目,其平台目标将默认为x86,即32位程序。 我假设您已将此更改为x64,或者您永远无法分配超过2GB的地址空间。

我猜你只是去了项目属性> Build选项卡,并更改了“Platform target”。 问题是,如果这就是你所做的,那只会影响你的Debug构建配置,因为屏幕顶部的“Configuration”filter默认为“Active(Debug)”。

将该filter框更改为“Release”以查看发布版本设置。 您还需要在此处将“平台目标”更改为“x64”。

上述就是C#学习教程:使用VS2010编译时,仅在发布模式下OutOfMemoryException?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1007255.html

(0)
上一篇 2021年12月28日
下一篇 2021年12月28日

精彩推荐