|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.nio.Buffer java.nio.ByteBuffer java.nio.MappedByteBuffer
public abstract class MappedByteBuffer
直接位元組緩衝區,其內容是檔案的記憶體映射區域。
映射的位元組緩衝區是通過 FileChannel.map
方法創建的。此類別用特定於記憶體映射檔案區域的操作擴展 ByteBuffer
類別。
映射的位元組緩衝區和它所表示的檔案映射關係在該緩衝區本身成為垃圾回收緩衝區之前一直保持有效。
映射的位元組緩衝區的內容可以隨時更改,例如,在此程序或另一個程序更改了對應的映射檔案區域的內容的情況下。這些更改是否發生(以及何時發生)與作業系統無關,因此是未指定的。
全部或部分映射的位元組緩衝區可能隨時成為不可存取的,例如,如果我們截取映射的檔案。試圖存取映射的位元組緩衝區的不可存取區域將不會更改緩衝區的內容,並導致在存取時或存取後的某個時刻拋出未指定的異常。因此強烈推薦採取適當的預防措施,以避免此程序或另一個同時運行的程序對映射的檔案執行操作(讀寫檔案內容除外)。
除此之外,映射的位元組緩衝區的功能與普通的直接位元組緩衝區完全相同。
方法摘要 | |
---|---|
MappedByteBuffer |
force()
將此緩衝區所做的內容更改強制寫入包含映射檔案的存儲設備中。 |
boolean |
isLoaded()
判斷此緩衝區的內容是否位於物理記憶體中。 |
MappedByteBuffer |
load()
將此緩衝區內容載入到物理記憶體中。 |
從類別 java.nio.ByteBuffer 繼承的方法 |
---|
allocate, allocateDirect, array, arrayOffset, asCharBuffer, asDoubleBuffer, asFloatBuffer, asIntBuffer, asLongBuffer, asReadOnlyBuffer, asShortBuffer, compact, compareTo, duplicate, equals, get, get, get, get, getChar, getChar, getDouble, getDouble, getFloat, getFloat, getInt, getInt, getLong, getLong, getShort, getShort, hasArray, hashCode, isDirect, order, order, put, put, put, put, put, putChar, putChar, putDouble, putDouble, putFloat, putFloat, putInt, putInt, putLong, putLong, putShort, putShort, slice, toString, wrap, wrap |
從類別 java.nio.Buffer 繼承的方法 |
---|
capacity, clear, flip, hasRemaining, isReadOnly, limit, limit, mark, position, position, remaining, reset, rewind |
從類別 java.lang.Object 繼承的方法 |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
方法詳細資訊 |
---|
public final boolean isLoaded()
返回值為 true 意味著此緩衝區中所有資料極有可能都位於物理記憶體中,因此是可存取的,不會導致任何虛擬記憶體頁錯誤,也無需任何 I/O 操作。返回值為 false 不一定意味著緩衝區的內容不位於物理記憶體中。
返回值是一個提示,而不是保證,因為在此方法的調用返回之前,底層作業系統可能已經移出某些緩衝區資料。
public final MappedByteBuffer load()
此方法最大限度地確保在它返回時此緩衝區內容位於物理記憶體中。調用此方法可能導致一些頁面錯誤,並導致發生 I/O 操作。
public final MappedByteBuffer force()
如果映射到此緩衝區中的檔案位於本地存儲設備上,那麼當此方法返回時,可以保證自此緩衝區創建以來,或自最後一次調用此方法以來,已經將對緩衝區所做的所有更改寫入到該設備。
如果檔案不在本地設備上,則無法作出這樣的保證。
如果此緩衝區不是以讀/寫網要 (FileChannel.MapMode.READ_WRITE
) 映射的,則調用此方法無效。
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。