Class RAMDirectory
- java.lang.Object
-
- org.apache.lucene.store.Directory
-
- org.apache.lucene.store.BaseDirectory
-
- org.apache.lucene.store.RAMDirectory
-
- All Implemented Interfaces:
Closeable,AutoCloseable,Accountable
@Deprecated public class RAMDirectory extends BaseDirectory implements Accountable
Deprecated.This class uses inefficient synchronization and is discouraged in favor ofMMapDirectory. It will be removed in future versions of Lucene.A memory-residentDirectoryimplementation. Locking implementation is by default theSingleInstanceLockFactory.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
Fields Modifier and Type Field Description protected Map<String,RAMFile>fileMapDeprecated.protected AtomicLongsizeInBytesDeprecated.-
Fields inherited from class org.apache.lucene.store.BaseDirectory
isOpen, lockFactory
-
-
Constructor Summary
Constructors Constructor Description RAMDirectory()Deprecated.Constructs an emptyDirectory.RAMDirectory(FSDirectory dir, IOContext context)Deprecated.Creates a newRAMDirectoryinstance from a differentDirectoryimplementation.RAMDirectory(LockFactory lockFactory)Deprecated.Constructs an emptyDirectorywith the givenLockFactory.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description voidclose()Deprecated.Closes the store to future operations, releasing associated memory.IndexOutputcreateOutput(String name, IOContext context)Deprecated.Creates a new, empty file in the directory and returns anIndexOutputinstance for appending data to this file.IndexOutputcreateTempOutput(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.longfileLength(String name)Deprecated.Returns the length in bytes of a file in the directory.booleanfileNameExists(String name)Deprecated.Collection<Accountable>getChildResources()Deprecated.Returns nested resources of this class.Set<String>getPendingDeletions()Deprecated.Returns a set of files currently pending deletion in this directory.String[]listAll()Deprecated.Returns names of all files stored in this directory.protected RAMFilenewRAMFile()Deprecated.Returns a newRAMFilefor storing data.IndexInputopenInput(String name, IOContext context)Deprecated.Returns a stream reading an existing file.longramBytesUsed()Deprecated.Return total size in bytes of all files in this directory.voidrename(String source, String dest)Deprecated.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).voidsyncMetaData()Deprecated.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, toString
-
Methods inherited from class org.apache.lucene.store.Directory
copyFrom, getTempFileName, openChecksumInput
-
-
-
-
Field Detail
-
sizeInBytes
protected final AtomicLong sizeInBytes
Deprecated.
-
-
Constructor Detail
-
RAMDirectory
public RAMDirectory()
Deprecated.Constructs an emptyDirectory.
-
RAMDirectory
public RAMDirectory(LockFactory lockFactory)
Deprecated.Constructs an emptyDirectorywith the givenLockFactory.
-
RAMDirectory
public RAMDirectory(FSDirectory dir, IOContext context) throws IOException
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
-
-
Method Detail
-
listAll
public final String[] 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
public final boolean fileNameExists(String name)
Deprecated.
-
fileLength
public final long fileLength(String name) throws IOException
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
public Collection<Accountable> 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:
Accountables
-
deleteFile
public void deleteFile(String name) throws IOException
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
public IndexOutput createOutput(String name, IOContext context) throws IOException
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
protected RAMFile newRAMFile()
Deprecated.Returns a newRAMFilefor storing data. This method can be overridden to return differentRAMFileimpls, that e.g. overrideRAMFile.newBuffer(int).
-
sync
public void sync(Collection<String> names) throws IOException
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:
Directory.syncMetaData()
-
rename
public void rename(String source, String dest) throws IOException
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
public void syncMetaData() throws IOExceptionDeprecated.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:
Directory.sync(Collection)
-
openInput
public IndexInput openInput(String name, IOContext context) throws IOException
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
public Set<String> getPendingDeletions()
Deprecated.Description copied from class:DirectoryReturns a set of files currently pending deletion in this directory.- Specified by:
getPendingDeletionsin classDirectory
-
-