abstract class MappedByteBuffer extends ByteBuffer
Posted on 2012-01-06 14:09 cooperzh 閱讀(286) 評論(0) 編輯 收藏 所屬分類: java.lang.* 、public 、類MappedByteBuffer 將文件直接映射到虛擬內(nèi)存。可以映射整個文件,如果文件太大,可以分段指定映射。
通常通過FileChannel.map()方法創(chuàng)建。
映射之后,通過MappedByteBuffer 訪問文件內(nèi)容,比到硬盤上去讀取文件要快很多。FileChannel.map()方法創(chuàng)建時指定方式:
MapMode.READ_ONLY,嘗試修改緩沖區(qū)則報異常ReadOnlyBufferException
MapMode.READ_WRITE,共享緩沖區(qū),所有訪問的程序都可讀可寫,但寫完是否其他程序立即看到變更,未知
MapMode.PRIVATE,創(chuàng)建副本,所有修改對同時訪問的其他程序不可見
protected:
volatile boolean isAMappedBuffer;
private方法:
checkMapped();
pagePosition();
public final方法:
isLoaded(); 緩存區(qū)內(nèi)容是否處于物理內(nèi)存中
load(); 將緩沖區(qū)內(nèi)容從虛擬內(nèi)存加載到物理內(nèi)存
force(); 當緩存區(qū)是MapMode.READ_WRITE模式時,將緩存區(qū)內(nèi)容寫入存儲設(shè)備中
private native方法:
isLoaded0();
load0();
force0();
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(); 緩存區(qū)內(nèi)容是否處于物理內(nèi)存中
load(); 將緩沖區(qū)內(nèi)容從虛擬內(nèi)存加載到物理內(nèi)存
force(); 當緩存區(qū)是MapMode.READ_WRITE模式時,將緩存區(qū)內(nèi)容寫入存儲設(shè)備中
private native方法:
isLoaded0();
load0();
force0();