У меня большие файлы CT rawdata, размер которых может превышать максимальный размер от 20 до 30 ГБ. Для большинства наших современных компьютеров в отделе у нас есть максимум 3 ГБ. Но для обработки данных нам нужно пройти через все доступные данные. Конечно, мы могли бы сделать это, последовательно просматривая данные с помощью функций чтения и записи. Но иногда необходимо хранить некоторые данные в памяти.
В настоящее время у меня есть собственное управление памятью, где я создал так называемый MappableObject. Каждый необработанный файл содержит, скажем, 20000 структур, каждый из которых показывает разные данные. Каждый MappableObject ссылается на местоположение в файле.
В C # я создал частично частично работающий механизм, который автоматически mps и отображает данные при необходимости. Много лет назад я знал MemoryMappedFiles, но в .NET 3.5 я отказался использовать его, потому что знал, что в .NET 4.0 он будет доступен изначально.
Итак, сегодня я попробовал MemoryMappedFiles и обнаружил, что невозможно выделить столько памяти, сколько необходимо. Если у меня 32-битная система и я хочу выделить 20 ГБ, она не работает из-за превышения размера логического адресного пространства. Это как-то понятно мне.
Но есть ли способ обработки таких больших файлов, как у меня? Какие еще у меня есть шансы? Как вы, ребята, решаете такие вещи?
Спасибо
Martin