posts - 12, comments - 0, trackbacks - 0, articles - 7
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

abstract class MappedByteBuffer extends ByteBuffer

Posted on 2012-01-06 14:09 cooperzh 阅读(271) 评论(0)  编辑  收藏 所属分类: java.lang.*public
MappedByteBuffer 将文件直接映射到虚拟内存。可以映射整个文件,如果文件太大,可以分段指定映射。

通常通过FileChannel.map()方法创建。
映射之后,通过MappedByteBuffer 访问文件内容,比到硬盘上去读取文件要快很多。

FileChannel.map()方法创建时指定方式:
MapMode.READ_ONLY,尝试修改缓冲区则报异常ReadOnlyBufferException
MapMode.READ_WRITE,共享缓冲区,所有访问的程序都可读可写,但写完是否其他程序立即看到变更,未知
MapMode.PRIVATE,创建副本,所有修改对同时访问的其他程序不可见

protected:
volatile boolean isAMappedBuffer;
MappedByteBuffer(int mark,int pos,int lim,int cap,boolean mapped);
MappedByteBuffer(mark,pos,lim,cap);

private方法:
checkMapped(); 
pagePosition();

public final方法:
isLoaded(); 缓存区内容是否处于物理内存中
load(); 将缓冲区内容从虚拟内存加载到物理内存
force(); 当缓存区是MapMode.READ_WRITE模式时,将缓存区内容写入存储设备中

private native方法:
isLoaded0();
load0();
force0();