在内存映射交换文件中移动内存

时间:2011-06-28 07:06:55

标签: java android memory-mapped-files swapfile

我正在尝试使用MappedByteBuffer来存储映射文件,为不同大小的位图设置交换文件。我希望能够在这个文件中移动内存,所以可能有两个子问题:

  • 有没有办法告诉ByteBuffer将内存块移动到另一个索引,或者
  • 是否可以直接访问原始映射内存来自行移动。

1 个答案:

答案 0 :(得分:0)

好的,我找到了一种方法,通过使用MappedByteBuffer映射的文件通道来传输内存。

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

这比从MappedByteBuffer中读取int并将其写入复制指向同一文件中的另一个位置快约200倍(准确地说:读取1/100数据时速度快两倍)。 / p>