Class RAMDirectory
- All Implemented Interfaces:
Closeable,AutoCloseable,Accountable
Directory implementation. Locking
implementation is by default the SingleInstanceLockFactory.
Warning: This class is not intended to work with huge
indexes. Everything beyond several hundred megabytes will waste
resources (GC cycles), because it uses an internal buffer size
of 1024 bytes, producing millions of byte[1024] arrays.
This class is optimized for small memory-resident indexes.
It also has bad concurrency on multithreaded environments.
It is recommended to materialize large indexes on disk and use
MMapDirectory, which is a high-performance directory
implementation working directly on the file system cache of the
operating system, so copying data to Java heap space is not useful.
-
Field Summary
FieldsModifier and TypeFieldDescriptionDeprecated.private final AtomicLongDeprecated.Used to generate temp file names increateTempOutput(java.lang.String, java.lang.String, org.apache.lucene.store.IOContext).protected final AtomicLongDeprecated.Fields inherited from class org.apache.lucene.store.BaseDirectory
isOpen, lockFactoryFields inherited from interface org.apache.lucene.util.Accountable
NULL_ACCOUNTABLE -
Constructor Summary
ConstructorsModifierConstructorDescriptionDeprecated.Constructs an emptyDirectory.privateRAMDirectory(FSDirectory dir, boolean closeDir, IOContext context) Deprecated.RAMDirectory(FSDirectory dir, IOContext context) Deprecated.Creates a newRAMDirectoryinstance from a differentDirectoryimplementation.RAMDirectory(LockFactory lockFactory) Deprecated.Constructs an emptyDirectorywith the givenLockFactory. -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()Deprecated.Closes the store to future operations, releasing associated memory.createOutput(String name, IOContext context) Deprecated.Creates a new, empty file in the directory and returns anIndexOutputinstance for appending data to this file.createTempOutput(String prefix, String suffix, IOContext context) Deprecated.Creates a new, empty, temporary file in the directory and returns anIndexOutputinstance for appending data to this file.voiddeleteFile(String name) Deprecated.Removes an existing file in the directory.final longfileLength(String name) Deprecated.Returns the length in bytes of a file in the directory.final booleanfileNameExists(String name) Deprecated.Deprecated.Returns nested resources of this class.Deprecated.Returns a set of files currently pending deletion in this directory.final String[]listAll()Deprecated.Returns names of all files stored in this directory.protected RAMFileDeprecated.Returns a newRAMFilefor storing data.Deprecated.Returns a stream reading an existing file.final longDeprecated.Return total size in bytes of all files in this directory.voidDeprecated.Renamessourcefile todestfile wheredestmust not already exist in the directory.voidsync(Collection<String> names) Deprecated.Ensures that any writes to these files are moved to stable storage (made durable).voidDeprecated.Ensures that directory metadata, such as recent file renames, are moved to stable storage.Methods inherited from class org.apache.lucene.store.BaseDirectory
ensureOpen, obtainLock, toStringMethods inherited from class org.apache.lucene.store.Directory
copyFrom, getTempFileName, openChecksumInput
-
Field Details
-
fileMap
Deprecated. -
sizeInBytes
Deprecated. -
nextTempFileCounter
Deprecated.Used to generate temp file names increateTempOutput(java.lang.String, java.lang.String, org.apache.lucene.store.IOContext).
-
-
Constructor Details
-
RAMDirectory
public RAMDirectory()Deprecated.Constructs an emptyDirectory. -
RAMDirectory
Deprecated.Constructs an emptyDirectorywith the givenLockFactory. -
RAMDirectory
Deprecated.Creates a newRAMDirectoryinstance from a differentDirectoryimplementation. This can be used to load a disk-based index into memory.Warning: This class is not intended to work with huge indexes. Everything beyond several hundred megabytes will waste resources (GC cycles), because it uses an internal buffer size of 1024 bytes, producing millions of
byte[1024]arrays. This class is optimized for small memory-resident indexes. It also has bad concurrency on multithreaded environments.For disk-based indexes it is recommended to use
MMapDirectory, which is a high-performance directory implementation working directly on the file system cache of the operating system, so copying data to Java heap space is not useful.Note that the resulting
RAMDirectoryinstance is fully independent from the originalDirectory(it is a complete copy). Any subsequent changes to the originalDirectorywill not be visible in theRAMDirectoryinstance.- Parameters:
dir- aDirectoryvalue- Throws:
IOException- if an error occurs
-
RAMDirectory
Deprecated.- Throws:
IOException
-
-
Method Details
-
listAll
Deprecated.Description copied from class:DirectoryReturns names of all files stored in this directory. The output must be in sorted (UTF-16, java'sString.compareTo(java.lang.String)) order. -
fileNameExists
Deprecated. -
fileLength
Deprecated.Returns the length in bytes of a file in the directory.- Specified by:
fileLengthin classDirectory- Parameters:
name- the name of an existing file.- Throws:
IOException- if the file does not exist
-
ramBytesUsed
public final long ramBytesUsed()Deprecated.Return total size in bytes of all files in this directory. This is currently quantized to RAMOutputStream.BUFFER_SIZE.- Specified by:
ramBytesUsedin interfaceAccountable
-
getChildResources
Deprecated.Description copied from interface:AccountableReturns nested resources of this class. The result should be a point-in-time snapshot (to avoid race conditions).- Specified by:
getChildResourcesin interfaceAccountable- See Also:
-
deleteFile
Deprecated.Description copied from class:DirectoryRemoves an existing file in the directory. This method must throw eitherNoSuchFileExceptionorFileNotFoundExceptionifnamepoints to a non-existing file.- Specified by:
deleteFilein classDirectory- Parameters:
name- the name of an existing file.- Throws:
IOException- in case of I/O error
-
createOutput
Deprecated.Description copied from class:DirectoryCreates a new, empty file in the directory and returns anIndexOutputinstance for appending data to this file. This method must throwFileAlreadyExistsExceptionif the file already exists.- Specified by:
createOutputin classDirectory- Parameters:
name- the name of the file to create.- Throws:
IOException- in case of I/O error
-
createTempOutput
public IndexOutput createTempOutput(String prefix, String suffix, IOContext context) throws IOException Deprecated.Description copied from class:DirectoryCreates a new, empty, temporary file in the directory and returns anIndexOutputinstance for appending data to this file. The temporary file name (accessible viaIndexOutput.getName()) will start withprefix, end withsuffixand have a reserved file extension.tmp.- Specified by:
createTempOutputin classDirectory- Throws:
IOException
-
newRAMFile
Deprecated.Returns a newRAMFilefor storing data. This method can be overridden to return differentRAMFileimpls, that e.g. overrideRAMFile.newBuffer(int). -
sync
Deprecated.Description copied from class:DirectoryEnsures that any writes to these files are moved to stable storage (made durable). Lucene uses this to properly commit changes to the index, to prevent a machine/OS crash from corrupting the index.- Specified by:
syncin classDirectory- Throws:
IOException- See Also:
-
rename
Deprecated.Description copied from class:DirectoryRenamessourcefile todestfile wheredestmust not already exist in the directory. It is permitted for this operation to not be truly atomic, for example bothsourceanddestcan be visible temporarily inDirectory.listAll(). However, the implementation of this method must ensure the content ofdestappears as the entiresourceatomically. So oncedestis visible for readers, the entire content of previoussourceis visible. This method is used by IndexWriter to publish commits.- Specified by:
renamein classDirectory- Throws:
IOException
-
syncMetaData
Deprecated.Description copied from class:DirectoryEnsures that directory metadata, such as recent file renames, are moved to stable storage.- Specified by:
syncMetaDatain classDirectory- Throws:
IOException- See Also:
-
openInput
Deprecated.Returns a stream reading an existing file.- Specified by:
openInputin classDirectory- Parameters:
name- the name of an existing file.- Throws:
IOException- in case of I/O error
-
close
public void close()Deprecated.Closes the store to future operations, releasing associated memory. -
getPendingDeletions
Deprecated.Description copied from class:DirectoryReturns a set of files currently pending deletion in this directory.- Specified by:
getPendingDeletionsin classDirectory
-
MMapDirectory. It will be removed in future versions of Lucene.