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