.Net размер объекта
Кажется, существует ограничение на размер 2 ГБ для объектов в .Net: Как запустить Fsi.exe в 64 битах?
Есть ли работа вокруг этого? Я хотел бы загрузить в память очень большой поплавковый массив (10 ГБ), а затем
выполните некоторую работу.
Спасибо
Ответы
Ответ 1
.NET ограничивает любой объект до 2 ГБ даже на 64-битных платформах. Вы можете создать свой собственный тип данных, который использует несколько объектов для хранения большего количества данных, тем самым обойдя ограничение 2 ГБ одного объекта. Например, List<float[]>
позволит вам хранить более 2 ГБ, но вам нужно будет написать необходимый сантехнический код, чтобы он был похож на один большой массив.
Вы также можете проверить этот вопрос.
Ответ 2
В версиях .NET до 4.5 максимальный размер объекта составляет 2 ГБ. Начиная с версии 4.5 вы можете выделять более крупные объекты, если включена gcAllowVeryLargeObjects. Обратите внимание, что ограничение для string
не влияет, но "массивы" также должны охватывать "списки", поскольку списки поддерживаются массивами.
Ответ 3
Я не думаю, что для этого есть легкое обходное решение, мне кажется, что могут возникнуть трудности с реализацией кучи без ограничения на размер объекта 2Gb.
Возможно, вам лучше взломать данные каким-то образом. Должно быть возможно написать класс, который ведет себя как массив, но разбивает данные на куски фиксированного размера под капотом.