开发者

.NET object size limit

开发者 https://www.devze.com 2023-01-27 08:22 出处:网络
It seems there is开发者_如何转开发 a 2 GB size limit for objects in .NET: How to run Fsi.exe in 64 Bits?

It seems there is开发者_如何转开发 a 2 GB size limit for objects in .NET: How to run Fsi.exe in 64 Bits?

Is there a work around this? I would like to load a very large float array (10 GB) in memory and then do some work.


.NET limits any object to max 2 GB even on 64 bit platforms. You can create your own data type, that uses multiple objects to store more data, thus getting around the 2 GB limit of a single object. For instance a List<float[]> would allow you to store more than 2 GB, but you would have to write the necessary plumbing code to make it behave similar to a single, large array.

You may also want to check this question.


In versions of .NET prior to 4.5, the maximum object size is 2GB. From 4.5 onwards you can allocate larger objects if gcAllowVeryLargeObjects is enabled. Note that the limit for string is not affected, but "arrays" should cover "lists" too, since lists are backed by arrays.


I don't think there is an easy workaround for this, it seems to me there could be difficulties implementing a heap without a 2Gb limit on object size.

Maybe you would be better breaking the data up some how. It should be possible to write a class that behave like an array but splits the data up into fixed sized chunks under the hood.

0

精彩评论

暂无评论...
验证码 换一张
取 消