Расширение Java Memory Capaped Byte Buffer
-
26-09-2019 - |
Вопрос
Есть ли способ расширить память с памятью байтового байта, так что новый размер отражается обратно к сопоставленному файлу на диске?
Решение
Нет, вам нужно будет настроить размер базового файла и воссоздать память сопоставленного байтового буфера.
RandomAccessFile file = new RandomAccessFile(/* some file */);
MappedByteBuffer buffer = file.getChannel().map(MapMode.READ_WRITE, 0, file.length());
// Some stuff happens...
// adjust the size
file.setLength(newLength);
// recreate the memory mapped buffer
buffer = file.getChannel().map(MapMode.READ_WRITE, 0, file.length());
Примечание. Настройка длины файла имеет немного слабого поведения. Если вы пишете в файл через карту в определенной позиции, который находится за пределы конца файла (либо используя map.position (), либо map.putx (позиция, ...)) значения будут добавлены к концу Файл и не записан в позиции, который вы ожидаете (по меньшей мере, на Linux). Если это нежелательное поведение, вам нужно будет добавить данные в файл, чтобы по-настоящему расти файл.
Не связан с StackOverflow