答案 0 :(得分:9)
即使在64位平台上,.NET也会将任何对象限制为最大2 GB。您可以创建自己的数据类型,使用多个对象来存储更多数据,从而绕过单个对象的2 GB限制。例如,List<float[]>
允许您存储超过2 GB,但您必须编写必要的管道代码,使其行为类似于单个大型数组。
您可能还想查看this question。
答案 1 :(得分:4)
在4.5之前的.NET版本中,最大对象大小为2GB。从4.5开始,如果启用gcAllowVeryLargeObjects,您可以分配更大的对象。请注意,string
的限制不受影响,但“数组”也应该包含“列表”,因为列表由数组支持。
答案 2 :(得分:2)
我认为没有一个简单的解决方法,在我看来,如果没有对象大小的2Gb限制,实现堆可能会有困难。
也许你会更好地打破数据。应该可以编写一个类似于数组的类,但将数据拆分为固定大小的块。