Ограничение размера объекта.Net

Кажется, есть ограничение в 2 ГБ для объектов в.Net: Как запустить Fsi.exe в 64 бит?

Есть ли работа вокруг этого? Я хотел бы загрузить в память очень большой массив с плавающей запятой (10 ГБ), а затем выполнить некоторую работу.

Спасибо

3 ответа

Решение

.NET ограничивает любой объект до 2 ГБ даже на 64-битных платформах. Вы можете создать свой собственный тип данных, который использует несколько объектов для хранения большего количества данных, таким образом, получая ограничение в 2 ГБ для одного объекта. Например, List<float[]> позволит вам хранить более 2 ГБ, но вам придется написать необходимый сантехнический код, чтобы он вел себя подобно одному большому массиву.

Вы также можете проверить этот вопрос.

В версиях.NET до 4.5 максимальный размер объекта составляет 2 ГБ. Начиная с версии 4.5, вы можете размещать более крупные объекты, если включен gcAllowVeryLargeObjects. Обратите внимание, что предел для string не затрагивается, но "массивы" должны также покрывать "списки", поскольку списки поддерживаются массивами.

Я не думаю, что есть простой обходной путь для этого, мне кажется, могут быть трудности с реализацией кучи без ограничения размера объекта в 2 Гб.

Может быть, вам лучше разбить данные как-нибудь. Должна быть возможность написать класс, который будет вести себя как массив, но разбивает данные на фрагменты фиксированного размера.

Другие вопросы по тегам