JavaTM 2 Platform
Standard Ed. 6

java.nio
類別 MappedByteBuffer

java.lang.Object
  繼承者 java.nio.Buffer
      繼承者 java.nio.ByteBuffer
          繼承者 java.nio.MappedByteBuffer
所有已實作的介面:
Comparable<ByteBuffer>

public abstract class MappedByteBuffer
extends ByteBuffer

直接位元組緩衝區,其內容是檔案的記憶體映射區域。

映射的位元組緩衝區是通過 FileChannel.map 方法創建的。此類別用特定於記憶體映射檔案區域的操作擴展 ByteBuffer 類別。

映射的位元組緩衝區和它所表示的檔案映射關係在該緩衝區本身成為垃圾回收緩衝區之前一直保持有效。

映射的位元組緩衝區的內容可以隨時更改,例如,在此程序或另一個程序更改了對應的映射檔案區域的內容的情況下。這些更改是否發生(以及何時發生)與作業系統無關,因此是未指定的。

全部或部分映射的位元組緩衝區可能隨時成為不可存取的,例如,如果我們截取映射的檔案。試圖存取映射的位元組緩衝區的不可存取區域將不會更改緩衝區的內容,並導致在存取時或存取後的某個時刻拋出未指定的異常。因此強烈推薦採取適當的預防措施,以避免此程序或另一個同時運行的程序對映射的檔案執行操作(讀寫檔案內容除外)。

除此之外,映射的位元組緩衝區的功能與普通的直接位元組緩衝區完全相同。

從以下版本開始:
1.4

方法摘要
 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
 

方法詳細資訊

isLoaded

public final boolean isLoaded()
判斷此緩衝區的內容是否位於物理記憶體中。

返回值為 true 意味著此緩衝區中所有資料極有可能都位於物理記憶體中,因此是可存取的,不會導致任何虛擬記憶體頁錯誤,也無需任何 I/O 操作。返回值為 false 不一定意味著緩衝區的內容不位於物理記憶體中。

返回值是一個提示,而不是保證,因為在此方法的調用返回之前,底層作業系統可能已經移出某些緩衝區資料。

返回:
如果此緩衝區內容可能位於物理記憶體中,則返回 true

load

public final MappedByteBuffer load()
將此緩衝區內容載入到物理記憶體中。

此方法最大限度地確保在它返回時此緩衝區內容位於物理記憶體中。調用此方法可能導致一些頁面錯誤,並導致發生 I/O 操作。

返回:
此緩衝區

force

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