|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object java.nio.Buffer java.nio.ByteBuffer java.nio.MappedByteBuffer
public abstract class MappedByteBuffer
ファイルのメモリーマップ領域を内容とするダイレクト byte バッファーです。
マップされた byte バッファーは、FileChannel.map
メソッドで作成されます。このクラスは、マップされたメモリーファイルの領域に特有の操作が利用できるように、ByteBuffer
クラスを拡張しています。
マップド 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 Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。