MemoryMappedFiles: Сколько памяти можно выделить для файлов

У меня есть большие файлы с исходными данными CT, размер которых может превышать 20-30 ГБ. Для большинства наших компьютеров в отделе у нас есть максимум 3 ГБ. Но для обработки данных нам нужно просмотреть все доступные данные. Конечно, мы могли бы сделать это, последовательно просматривая данные с помощью функций чтения и записи. Но иногда необходимо сохранить некоторые данные в памяти.

В настоящее время у меня есть собственное управление памятью, в котором я создал так называемый MappableObject. Каждый файл rawdatafile содержит, скажем, 20000 структур, каждая из которых отображает разные данные. Каждый объект MappableObject ссылается на место в файле.

В C # я создал частично работающий механизм, который автоматически выполняет mps и при необходимости отключает отображение данных. Несколько лет назад я знаю MemoryMappedFiles, но в .NET 3.5 я отказался использовать его, потому что знал, что в .NET 4.0 он будет доступен изначально.

Итак, сегодня я попробовал MemoryMappedFiles и обнаружил, что это невозможно. выделить столько памяти, сколько необходимо. Если у меня 32-битная система, и я хочу выделить 20 ГБ, она не работает из-за превышения размера логического адресного пространства. Мне это как-то ясно.

Но есть ли способ обрабатывать такие большие файлы, как у меня? Какие еще у меня шансы? Как вы, ребята, решаете такие вещи?

Спасибо Мартин

5
задан msedi 1 April 2011 в 19:44
поделиться