【发布时间】:2010-11-30 09:26:13
【问题描述】:
.NET 中的对象似乎有 2 GB 的大小限制:How to run Fsi.exe in 64 Bits?
有解决办法吗?我想在内存中加载一个非常大的浮点数组(10 GB),然后做一些工作。
【问题讨论】:
-
@Torben Rahbek Koch 查看编辑谢谢
标签: .net
.NET 中的对象似乎有 2 GB 的大小限制:How to run Fsi.exe in 64 Bits?
有解决办法吗?我想在内存中加载一个非常大的浮点数组(10 GB),然后做一些工作。
【问题讨论】:
标签: .net
.NET 将任何对象限制为最大 2 GB,即使在 64 位平台上也是如此。您可以创建自己的数据类型,使用多个对象来存储更多数据,从而绕过单个对象的 2 GB 限制。例如,List<float[]> 将允许您存储超过 2 GB 的空间,但您必须编写必要的管道代码以使其行为类似于单个大型数组。
您可能还想查看this question。
【讨论】:
在 4.5 之前的 .NET 版本中,最大对象大小为 2GB。从 4.5 开始,如果启用了 gcAllowVeryLargeObjects,您可以分配更大的对象。请注意,string 的限制不受影响,但“数组”也应涵盖“列表”,因为列表由数组支持。
【讨论】:
我不认为有一个简单的解决方法,在我看来,在对象大小没有 2Gb 限制的情况下实现堆可能会很困难。
也许您最好以某种方式分解数据。应该可以编写一个行为类似于数组但在后台将数据拆分为固定大小的块的类。
【讨论】: