- java.lang.Object
-
- java.nio.Buffer
-
- java.nio.ByteBuffer
-
- java.nio.MappedByteBuffer
-
- すべての実装されたインタフェース:
Comparable<ByteBuffer>
public abstract class MappedByteBuffer extends ByteBuffer
ファイルのメモリー・マップ領域を内容とするダイレクトbyteバッファです。マップされたbyteバッファは、
FileChannel.map
メソッドで作成されます。 このクラスは、メモリー・マップされたファイル領域に特有の操作を使用してByteBuffer
クラスを拡張します。マップされたbyteバッファと、これによって表されるファイル・マッピングは、バッファ自体がガベージ・コレクトされるまで有効です。
たとえば、何らかのプログラムによって、マップされたファイルの対応する領域の内容が変更されれば、マップされたbyteバッファの内容も変更されます。 こうした変更が発生するかどうか、またどのタイミングで発生するかは、オペレーティング・システムによって異なるため、未指定です。
マップされたbyteバッファ全体またはその一部にアクセスできなくなることがあります。たとえば、マップされたファイルの切詰めが行われると、このような事態が発生します。 マップされたbyteバッファのアクセス不可な領域にアクセスしようとしても、バッファの内容は変更されませんが、アクセスしたときまたはそのあとで未指定の例外がスローされます。 事前に適切な予防措置をとり、このプログラムや並行して実行されているプログラムから、マップされたファイルに対して読み込みと書込み以外の操作を実行できないようにすることを強くお薦めします。
それ以外の点では、マップされたbyteバッファは通常のダイレクトbyteバッファと同じように動作します。
- 導入されたバージョン:
- 1.4
-
-
メソッドのサマリー
修飾子と型 メソッド 説明 MappedByteBuffer
force()
このバッファの内容への変更を、マップされたファイルが格納されている記憶装置へ強制的に書き込みます。boolean
isLoaded()
このバッファの内容が物理メモリー内にあるかどうかを判断します。MappedByteBuffer
load()
このバッファの内容を物理メモリーにロードします。-
クラス java.nio.ByteBufferで宣言されたメソッド
alignedSlice, alignmentOffset, 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, mismatch, order, order, put, put, put, put, put, putChar, putChar, putDouble, putDouble, putFloat, putFloat, putInt, putInt, putLong, putLong, putShort, putShort, slice, toString, wrap, wrap
-
-
-
-
メソッドの詳細
-
isLoaded
public final boolean isLoaded()
このバッファの内容が物理メモリー内にあるかどうかを判断します。戻り値が
true
の場合は、このバッファ内のすべてのデータが物理メモリーに格納されている可能性が高くなります。この場合、データにアクセスしたときに、仮想メモリーのページ違反や入出力操作は発生しません。 ただし、戻り値がfalse
の場合でも、バッファの内容が物理メモリーに格納されていることがあります。戻り値は絶対的なものではなく、単なる手がかりです。なぜなら、このメソッド呼出しが値を返すまでの間に、基礎にあるオペレーティング・システムによってバッファのデータの一部がページ・アウトされている可能性があるからです。
- 戻り値:
- 現在のバッファの内容が物理メモリーに格納されている可能性がある場合
true
-
load
public final MappedByteBuffer load()
このバッファの内容を物理メモリーにロードします。このメソッドは、値を返すときに、現在のバッファの内容を物理メモリー内にできるだけ格納しようとします。 このメソッドを呼び出すと、ページ違反や入出力操作が発生する可能性があります。
- 戻り値:
- このバッファ
-
force
public final MappedByteBuffer force()
このバッファの内容への変更を、マップされたファイルが格納されている記憶装置へ強制的に書き込みます。このバッファにマップされるファイルがローカルの記憶装置に格納されている場合は、ファイルを作成してからまたはこのメソッドを最後に呼び出してから行ったすべての変更が、値を返すときにこの記憶装置に強制的に書き込まれます。
一方、ファイルがローカルの記憶装置上にない場合、書込みは行われません。
このバッファが読み込み/書込みモード(
FileChannel.MapMode.READ_WRITE
)でマップされていなかった場合は、このメソッドを呼び出しても何も起こりません。- 戻り値:
- このバッファ
-
-