Отображение файлов размером более 2 ГБ с помощью Java

В общем можно было бы сказать: как реализовать метод byte [] get (offset, length) для файла с отображением в память это больше, чем 2 ГБ в Java.

С контекстом:

Я пытаюсь эффективно читать файлы размером более 2 ГБ со случайным вводом-выводом. Конечно, идея состоит в том, чтобы использовать Java nio и API с отображением памяти.

Проблема связана с ограничением 2 ГБ для отображения памяти. Одним из решений было бы отобразить несколько страниц размером 2 ГБ и проиндексировать их по смещению.

Здесь есть похожее решение:

Двоичный поиск в отсортированном (отображенном в память?) Файле в Java

Проблема с это решение состоит в том, что оно предназначено для чтения байтов, в то время как мой API должен читать byte [] (так что мой API будет чем-то вроде read (offset, length) ).

Можно ли просто изменить этот конечный get () на get (offset, length) ? Что происходит тогда, когда байт [] , который я читаю, находится между двумя страницами?

11
задан Community 23 May 2017 в 12:12
поделиться