开发者

Moving memory in memory mapped swap file

I'm trying to set up a s开发者_StackOverflow中文版wap file for bitmaps of different sizes by using the MappedByteBuffer to memory map the file. I want to be able to move memory within this file, so maybe two sub-questions:

  • Is there a way to tell the ByteBuffer to move chunks of memory to another index, or
  • Is it possible to directly access the raw mapped memory to do the moving myself.


Ok, I found a way to do this by using the filechannel that is mapped by the MappedByteBuffer to transfer memory within itself.

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

This is about 200x faster (to be exact: twice as fast when reading a 1/100 of the dataportion) than reading int by int from the MappedByteBuffer and writing it to duplicate that points to another position in the same file.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜