public abstract class MappedByteBuffer extends ByteBuffer
映射字节缓冲区的创建是通过FileChannel.map
方法。这类扩展,是特定区域的ByteBuffer
内存映射文件操作类。
一个映射的字节缓冲区和它所代表的文件映射保持有效,直到缓冲区本身是垃圾收集。
映射的字节缓冲区的内容可以在任何时间发生变化,例如,如果映射文件的相应区域的内容被这个程序或另一个改变。是否发生这样的变化,当它们发生时,是操作系统依赖,因此未指定。
映射的字节缓冲区的所有或部分可能在任何时候都无法访问,例如,如果映射的文件被截断。访问映射的字节缓冲区的不可访问区域的尝试将不会改变缓冲区的内容,并将导致在访问时或在稍后的时间内抛出一个未指定的异常。因此,强烈建议采取适当的预防措施,以避免由这个程序的映射文件的操作,或由一个同时运行的程序,除了读或写文件的内容。
映射的字节缓冲区,否则表现没有什么不同比普通的直接字节缓冲区。
Modifier and Type | Method and Description |
---|---|
MappedByteBuffer |
force()
强制将此缓冲区的内容写入到包含映射文件的存储设备上的任何更改。
|
boolean |
isLoaded()
告诉是否该缓冲区的内容是驻留在物理内存中的。
|
MappedByteBuffer |
load()
将此缓冲区的内容加载到物理内存中。
|
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
public final boolean isLoaded()
一个true返回值意味着极有可能的是,所有在这个缓冲区中的数据驻留在物理内存中,因此可以不用任何虚拟内存页面错误访问或I/O操作。一个false返回值并不一定意味着物理内存缓冲区的内容不是居民。
返回值是一个暗示,而不是一个保证,因为底层操作系统可能已经换出一些,这个方法调用返回的时间缓冲区的数据。
public final MappedByteBuffer load()
这种方法是最好的努力,以确保当它返回时,这个缓冲区的内容是驻留在物理内存中的。调用此方法可能会导致一些页面故障和I / O操作发生。
public final MappedByteBuffer force()
如果映射到这个缓冲区的文件驻留在本地存储设备上,那么当这个方法返回时,保证所有对缓冲区的变化,因为它被创建以来,或由于这种方法是最后一次调用,将已写入该设备。
如果该文件不驻留在本地设备上,则没有这样的保证。
如果这个缓冲区不在读/写模式的映射(FileChannel.MapMode.READ_WRITE
)然后调用该方法没有效果。
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.