|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--java.nio.Buffer | +--java.nio.ByteBuffer | +--java.nio.MappedByteBuffer
ファイルのメモリマップ領域を内容とするダイレクト byte バッファです。
マップド byte バッファは、FileChannel.map
メソッドで作成されます。このクラスは、メモリマップドファイルの領域に特有の操作を利用できるように、ByteBuffer
クラスを拡張します。
マップド byte バッファと、これによって表されるファイルマッピングは、バッファ自体がガベージコレクトされるまで有効です。
マップド byte バッファのコンテンツは随時変更されます。たとえば、なんらかのプログラムによって、マップドファイルの対応する領域のコンテンツが変更されれば、byte バッファのコンテンツも変更されます。こうした変更が発生するかどうかおよびそのタイミングは、オペレーティングシステムによって決定されます。ユーザーが指定することはできません。
マップされた byte バッファ全体またはその一部にアクセスできなくなることがあります。たとえば、マップされたファイルの切り捨てが行われると、このような事態が発生します。マップされた byte バッファのアクセス不能な領域にアクセスしようとしても、バッファのコンテンツは変更されませんが、アクセスしたときまたはそのあとで未指定の例外がスローされます。事前に適切な予防措置をとり、このプログラムや平行して実行されているプログラムから、マップドファイルに対して読み込みと書き込み以外の操作を実行できないようにすることを強くお勧めします。
何も適用しなかった場合、マップされた byte バッファは、通常のダイレクト byte バッファと同じように動作します。
メソッドの概要 | |
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 の場合は、現在のバッファ内のすべてのデータが物理メモリに格納されている可能性が高くなります。この場合、データにアクセスしたときに、仮想メモリのページ違反や入出力操作は発生しません。ただし、戻り値が false の場合でも、バッファのコンテンツが物理メモリに格納されていることがあります。
戻り値は絶対的なものではなく、単なる手がかりです。なぜなら、このメソッド呼び出しが値を返すまでの間に、基本となるオペレーティングシステムによって、バッファのデータの一部がページアウトされている可能性があるからです。
public final MappedByteBuffer load()
このメソッドは、値を返すときに、現在のバッファのコンテンツを物理メモリ内にできるだけ格納しようとします。このメソッドを呼び出すと、ページ違反や入出力操作が発生する可能性があります。
public final MappedByteBuffer force()
現在のバッファにマップされるファイルがローカルの記憶装置に格納されている場合は、ファイルを作成してからまたはこのメソッドを最後に呼び出してから行ったすべての変更が、値を返すときにこの記憶装置に強制的に書き込まれます。
一方、ファイルがローカルの記憶装置上にない場合、書き込みは行われません。
現在のバッファが読み込み / 書き込みモードでマップされていなかった場合は (FileChannel.MapMode.READ_WRITE
)、このメソッドを呼び出しても何も起こりません。
|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.