MappedByteBufferpublic abstract class MappedByteBuffer extends ByteBuffer {@code MappedByteBuffer} is a special kind of direct byte buffer which maps a
region of file to memory.
{@code MappedByteBuffer} can be created by calling
{@link java.nio.channels.FileChannel#map(java.nio.channels.FileChannel.MapMode, long, long) FileChannel.map}.
Once created, the mapping between the byte buffer and the file region remains
valid until the byte buffer is garbage collected.
All or part of a {@code MappedByteBuffer}'s content may change or become
inaccessible at any time, since the mapped file region can be modified by
another thread or process at any time. If this happens, the behavior of the
{@code MappedByteBuffer} is undefined.
|
Fields Summary |
---|
final DirectByteBuffer | wrapped | private int | mapMode |
Constructors Summary |
---|
MappedByteBuffer(ByteBuffer directBuffer)
super(directBuffer.capacity);
if (!directBuffer.isDirect()) {
throw new IllegalArgumentException();
}
this.wrapped = (DirectByteBuffer) directBuffer;
| MappedByteBuffer(org.apache.harmony.luni.platform.PlatformAddress addr, int capa, int offset, int mode)
super(capa);
mapMode = mode;
switch (mapMode) {
case IMemorySystem.MMAP_READ_ONLY:
wrapped = new ReadOnlyDirectByteBuffer(addr, capa, offset);
break;
case IMemorySystem.MMAP_READ_WRITE:
case IMemorySystem.MMAP_WRITE_COPY:
wrapped = new ReadWriteDirectByteBuffer(addr, capa, offset);
break;
default:
throw new IllegalArgumentException();
}
addr.autoFree();
|
Methods Summary |
---|
public final java.nio.MappedByteBuffer | force()Writes all changes of the buffer to the mapped file. If the mapped file
is stored on a local device, it is guaranteed that the changes are
written to the file. No such guarantee is given if the file is located on
a remote device.
if (mapMode == IMemorySystem.MMAP_READ_WRITE) {
((MappedPlatformAddress)((DirectBuffer) wrapped).getBaseAddress()).mmapFlush();
}
return this;
| public final boolean | isLoaded()Indicates whether this buffer's content is loaded. If the result is true
there is a high probability that the whole buffer memory is currently
loaded in RAM. If it is false it is unsure if it is loaded or not.
return ((MappedPlatformAddress)((DirectBuffer) wrapped).getBaseAddress()).mmapIsLoaded();
| public final java.nio.MappedByteBuffer | load()Loads this buffer's content into memory but it is not guaranteed to
succeed.
((MappedPlatformAddress)((DirectBuffer) wrapped).getBaseAddress()).mmapLoad();
return this;
|
|