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