JavaTM 2
Platform
Std. Ed. v1.4.0

java.nio
クラス MappedByteBuffer

java.lang.Object
  |
  +--java.nio.Buffer
        |
        +--java.nio.ByteBuffer
              |
              +--java.nio.MappedByteBuffer
すべての実装インタフェース:
Comparable

public abstract class MappedByteBuffer
extends ByteBuffer

ファイルのメモリマップ領域を内容とするダイレクト byte バッファです。

マップド byte バッファは、FileChannel.map メソッドで作成されます。このクラスは、メモリマップドファイルの領域に特有の操作を利用できるように、ByteBuffer クラスを拡張します。

マップド byte バッファと、これによって表されるファイルマッピングは、バッファ自体がガベージコレクトされるまで有効です。

マップド byte バッファのコンテンツは随時変更されます。たとえば、なんらかのプログラムによって、マップドファイルの対応する領域のコンテンツが変更されれば、byte バッファのコンテンツも変更されます。こうした変更が発生するかどうかおよびそのタイミングは、オペレーティングシステムによって決定されます。ユーザーが指定することはできません。

マップされた byte バッファ全体またはその一部にアクセスできなくなることがあります。たとえば、マップされたファイルの切り捨てが行われると、このような事態が発生します。マップされた byte バッファのアクセス不能な領域にアクセスしようとしても、バッファのコンテンツは変更されませんが、アクセスしたときまたはそのあとで未指定の例外がスローされます。事前に適切な予防措置をとり、このプログラムや平行して実行されているプログラムから、マップドファイルに対して読み込みと書き込み以外の操作を実行できないようにすることを強くお勧めします。

何も適用しなかった場合、マップされた byte バッファは、通常のダイレクト byte バッファと同じように動作します。

導入されたバージョン:
1.4

メソッドの概要
 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
 

メソッドの詳細

isLoaded

public final boolean isLoaded()
現在のバッファのコンテンツが物理メモリ内にあるかどうかを判断します。

戻り値が true の場合は、現在のバッファ内のすべてのデータが物理メモリに格納されている可能性が高くなります。この場合、データにアクセスしたときに、仮想メモリのページ違反や入出力操作は発生しません。ただし、戻り値が false の場合でも、バッファのコンテンツが物理メモリに格納されていることがあります。

戻り値は絶対的なものではなく、単なる手がかりです。なぜなら、このメソッド呼び出しが値を返すまでの間に、基本となるオペレーティングシステムによって、バッファのデータの一部がページアウトされている可能性があるからです。

戻り値:
現在のバッファのコンテンツが物理メモリに格納されている可能性がある場合 true

load

public final MappedByteBuffer load()
現在のバッファのコンテンツを物理メモリにロードします。

このメソッドは、値を返すときに、現在のバッファのコンテンツを物理メモリ内にできるだけ格納しようとします。このメソッドを呼び出すと、ページ違反や入出力操作が発生する可能性があります。

戻り値:
現在のバッファ

force

public final MappedByteBuffer force()
現在のバッファのコンテンツへの変更を、マップされたファイルが格納されている記憶装置へ強制的に書き込みます。

現在のバッファにマップされるファイルがローカルの記憶装置に格納されている場合は、ファイルを作成してからまたはこのメソッドを最後に呼び出してから行ったすべての変更が、値を返すときにこの記憶装置に強制的に書き込まれます。

一方、ファイルがローカルの記憶装置上にない場合、書き込みは行われません。

現在のバッファが読み込み / 書き込みモードでマップされていなかった場合は (FileChannel.MapMode.READ_WRITE)、このメソッドを呼び出しても何も起こりません。

戻り値:
現在のバッファ

JavaTM 2
Platform
Std. Ed. v1.4.0

バグの報告と機能のリクエスト
これ以外の API リファレンスおよび開発者用ドキュメントについては、 Java 2 SDK SE 開発者用ドキュメントを参照してください。 開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、 およびコード実例が含まれています。

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.