public abstract class MappedByteBuffer extends ByteBuffer
マップされたbyteバッファは、FileChannel.map
メソッドで作成されます。このクラスは、メモリー・マップされたファイル領域に特有の操作を使用してByteBuffer
クラスを拡張します。
マップされたbyteバッファと、これによって表されるファイル・マッピングは、バッファ自体がガベージ・コレクトされるまで有効です。
たとえば、何らかのプログラムによって、マップされたファイルの対応する領域の内容が変更されれば、マップされたbyteバッファの内容も変更されます。こうした変更が発生するかどうか、またどのタイミングで発生するかは、オペレーティング・システムによって異なるため、未指定です。
マップされたbyteバッファ全体またはその一部にアクセスできなくなることがあります。たとえば、マップされたファイルの切詰めが行われると、このような事態が発生します。マップされたbyteバッファのアクセス不可な領域にアクセスしようとしても、バッファの内容は変更されませんが、アクセスしたときまたはそのあとで未指定の例外がスローされます。事前に適切な予防措置をとり、このプログラムや並行して実行されているプログラムから、マップされたファイルに対して読み込みと書込み以外の操作を実行できないようにすることを強くお薦めします。
それ以外の点では、マップされたbyteバッファは通常のダイレクトbyteバッファと同じように動作します。
修飾子と型 | メソッドと説明 |
---|---|
MappedByteBuffer |
force()
このバッファの内容への変更を、マップされたファイルが格納されている記憶装置へ強制的に書き込みます。
|
boolean |
isLoaded()
このバッファの内容が物理メモリー内にあるかどうかを判断します。
|
MappedByteBuffer |
load()
このバッファの内容を物理メモリーにロードします。
|
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
public final boolean isLoaded()
戻り値がtrueの場合は、このバッファ内のすべてのデータが物理メモリーに格納されている可能性が高くなります。この場合、データにアクセスしたときに、仮想メモリーのページ違反や入出力操作は発生しません。ただし、戻り値がfalseの場合でも、バッファの内容が物理メモリーに格納されていることがあります。
戻り値は絶対的なものではなく、単なる手がかりです。なぜなら、このメソッド呼出しが値を返すまでの間に、基礎にあるオペレーティング・システムによってバッファのデータの一部がページ・アウトされている可能性があるからです。
public final MappedByteBuffer load()
このメソッドは、値を返すときに、現在のバッファの内容を物理メモリー内にできるだけ格納しようとします。このメソッドを呼び出すと、ページ違反や入出力操作が発生する可能性があります。
public final MappedByteBuffer force()
このバッファにマップされるファイルがローカルの記憶装置に格納されている場合は、ファイルを作成してからまたはこのメソッドを最後に呼び出してから行ったすべての変更が、値を返すときにこの記憶装置に強制的に書き込まれます。
一方、ファイルがローカルの記憶装置上にない場合、書込みは行われません。
このバッファが読み込み/書込みモード(FileChannel.MapMode.READ_WRITE
)でマップされていなかった場合は、このメソッドを呼び出しても何も起こりません。
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.