В общем можно было бы сказать: как реализовать метод byte [] get (offset, length)
для файла с отображением в память это больше, чем 2 ГБ в Java.
С контекстом:
Я пытаюсь эффективно читать файлы размером более 2 ГБ со случайным вводом-выводом. Конечно, идея состоит в том, чтобы использовать Java nio и API с отображением памяти.
Проблема связана с ограничением 2 ГБ для отображения памяти. Одним из решений было бы отобразить несколько страниц размером 2 ГБ и проиндексировать их по смещению.
Здесь есть похожее решение:
Двоичный поиск в отсортированном (отображенном в память?) Файле в Java
Проблема с это решение состоит в том, что оно предназначено для чтения байтов, в то время как мой API должен читать byte []
(так что мой API будет чем-то вроде read (offset, length)
).
Можно ли просто изменить этот конечный get ()
на get (offset, length)
? Что происходит тогда, когда байт []
, который я читаю, находится между двумя страницами?