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