首页 > Web开发 > 详细

NET Framework 4.5新特性 (三)64位平台支持大于2 GB大小的数组

时间:2014-07-21 10:06:11      阅读:463      评论:0      收藏:0      [点我收藏+]

 

64位平台.NET Framework数组限制不能超过2GB大小。这种限制对于需要使用到大型矩阵和向量计算的工作人员来说,是一个非常大问题。

 

无论RAM容量有多大有多少,一旦你使用大型矩阵和向量计算工作的时候,经常会抛出一个System.OutOfMemoryException异常,如下图所示:

 

bubuko.com,布布扣

 

参考程序

 class Program
    {
        private static void Main(string[] args)
        {
            int arrysize = 150000000;
            var large=new decimal[arrysize];
            Console.ReadLine();

        }
    }

 

值得庆幸的是。NET Framework 4.5引入了一个配置属性在运行时模式,使阵列总大小大于2 GB 64位应用程序。

您只需要启用gcAllowVeryLargeObjects元素控制.NET garbage-collection system(垃圾收集系统)的行为就可以了。

参考模板

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
    <runtime>
      <gcAllowVeryLargeObjects enabled="true" /> 
    </runtime>
</configuration>

可以看下结果没有抛出异常,可以正常的运行,如下

bubuko.com,布布扣

 

这种方式,可以更好地利用可用的内存使用巨大的数组时在64位平台上。

你可以把这个设置与garbage-collection system(垃圾回收系统)结合改进。但是.NET Framework 4.5与.NET Framework 4.0数组的元素的最大数量仍然一样。

NET Framework 4.5新特性 (三)64位平台支持大于2 GB大小的数组,布布扣,bubuko.com

NET Framework 4.5新特性 (三)64位平台支持大于2 GB大小的数组

原文:http://www.cnblogs.com/david1989/p/3855977.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!