Перемещение памяти в файл подстановки памяти - PullRequest
0 голосов
/ 28 июня 2011

Я пытаюсь настроить файл подкачки для растровых изображений разных размеров, используя MappedByteBuffer для отображения памяти в файле. Я хочу иметь возможность перемещать память в этом файле, поэтому, возможно, два подвопроса:

  • Есть ли способ указать ByteBuffer переместить куски памяти в другой индекс, или
  • Можно ли напрямую получить доступ к сырой отображенной памяти, чтобы выполнить перемещение самостоятельно.

1 Ответ

0 голосов
/ 06 октября 2011

Хорошо, я нашел способ сделать это, используя файловый канал, который отображается MappedByteBuffer для передачи памяти внутри себя.

RandomAccessFile raFile = new RandomAccessFile(MyFile, "rw");
FileChannel fileChannel = raFile.getChannel();
fileChannel.position(srcPosition);
fileChannel.transferFrom(fileChannel, dstPosition, count);

Это примерно в 200 раз быстрее (точнее: в два раза быстреепри чтении 1/100 части данных), чем при чтении int по int из MappedByteBuffer и записи его для дублирования, указывающего на другую позицию в том же файле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...