JavaTM 2 Platform
Standard Ed. 5.0

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 バッファは通常のダイレクト 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
Standard Ed. 5.0

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

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