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, 2013, Oracle and/or its affiliates. All rights reserved.