©
本文档使用
php.cn手册 发布
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object java.nio.Buffer java.nio.ByteBuffer java.nio.MappedByteBuffer
public abstract class MappedByteBuffer
直接字节缓冲区,其内容是文件的内存映射区域。
映射的字节缓冲区是通过 FileChannel.map
方法创建的。此类用特定于内存映射文件区域的操作扩展 ByteBuffer
类。
映射的字节缓冲区和它所表示的文件映射关系在该缓冲区本身成为垃圾回收缓冲区之前一直保持有效。
映射的字节缓冲区的内容可以随时更改,例如,在此程序或另一个程序更改了对应的映射文件区域的内容的情况下。这些更改是否发生(以及何时发生)与操作系统无关,因此是未指定的。
全部或部分映射的字节缓冲区可能随时成为不可访问的,例如,如果我们截取映射的文件。试图访问映射的字节缓冲区的不可访问区域将不会更改缓冲区的内容,并导致在访问时或访问后的某个时刻抛出未指定的异常。因此强烈推荐采取适当的预防措施,以避免此程序或另一个同时运行的程序对映射的文件执行操作(读写文件内容除外)。
除此之外,映射的字节缓冲区的功能与普通的直接字节缓冲区完全相同。
方法摘要 | |
---|---|
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 意味着此缓冲区中所有数据极有可能都位于物理内存中,因此是可访问的,不会导致任何虚拟内存页错误,也无需任何 I/O 操作。返回值为 false 不一定意味着缓冲区的内容不位于物理内存中。
返回值是一个提示,而不是保证,因为在此方法的调用返回之前,底层操作系统可能已经移出某些缓冲区数据。
public final MappedByteBuffer load()
此方法最大限度地确保在它返回时此缓冲区内容位于物理内存中。调用此方法可能导致一些页面错误,并导致发生 I/O 操作。
public final MappedByteBuffer force()
如果映射到此缓冲区中的文件位于本地存储设备上,那么当此方法返回时,可以保证自此缓冲区创建以来,或自最后一次调用此方法以来,已经将对缓冲区所做的所有更改写入到该设备。
如果文件不在本地设备上,则无法作出这样的保证。
如果此缓冲区不是以读/写模式 (FileChannel.MapMode.READ_WRITE
) 映射的,则调用此方法无效。
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。