JavaTM Platform
Standard Ed. 6

java.nio
クラス MappedByteBuffer

java.lang.Object
  上位を拡張 java.nio.Buffer
      上位を拡張 java.nio.ByteBuffer
          上位を拡張 java.nio.MappedByteBuffer
すべての実装されたインタフェース:
Comparable<ByteBuffer>

public abstract class MappedByteBuffer
extends ByteBuffer

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

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

マップド 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 Platform
Standard Ed. 6

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

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。