public class AdaptiveByteStore extends Object implements ByteStore
This class is intended to be a general purpose StoragePolicy implementation that does something sensible most of the time. The details of the implementation may be changed following experience.
The current implementation uses ByteBuffer.allocateDirect(int)
for byte arrays in memory apart from rather small ones.
On most OSes this corresponds to using malloc(),
thus avoiding heavy use of JVM heap memory.
Note very large arrays are still stored on disk, not directly
allocated.
| Constructor and Description |
|---|
AdaptiveByteStore()
Constructs a new store with a default memory limit.
|
AdaptiveByteStore(int memLimit)
Constructs a new store with a given maximum memory limit.
|
| Modifier and Type | Method and Description |
|---|---|
void |
close()
Tidies up.
|
void |
copy(OutputStream out)
Takes all the data written so far into this store's sink stream
and copies it to a destination stream.
|
static int |
getDefaultLimit()
Calculates the default memory limit used by this class.
|
long |
getLength()
Returns the number of bytes currently stored in this object.
|
OutputStream |
getOutputStream()
Returns an output stream which can be used to write to the store.
|
ByteBuffer[] |
toByteBuffers()
Returns an array of byte buffers containing the bytes written
to this store.
|
public AdaptiveByteStore(int memLimit)
throws IOException
memLimit - maximum size of in-memory bufferIOExceptionpublic AdaptiveByteStore()
throws IOException
IOExceptionpublic OutputStream getOutputStream()
ByteStoreBufferedOutputStream for efficiency if required.getOutputStream in interface ByteStorepublic long getLength()
ByteStorepublic void copy(OutputStream out) throws IOException
ByteStorecopy in interface ByteStoreout - data destination streamIOExceptionpublic ByteBuffer[] toByteBuffers() throws IOException
ByteStoreInteger.MAX_VALUE, more than one will be
required. The limit of each buffer indicates the
number of bytes it contains.
Usual usage will be to write all data, then call this method once; this model may affect implementation decisions about efficiency.
toByteBuffers in interface ByteStoreIOException - if there is an I/O errorpublic void close()
ByteStorepublic static int getDefaultLimit()
Copyright © 2025 Central Laboratory of the Research Councils. All Rights Reserved.