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-residentDirectory
implementation. 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>
fileMap
Deprecated.protected AtomicLong
sizeInBytes
Deprecated.-
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 newRAMDirectory
instance from a differentDirectory
implementation.RAMDirectory(LockFactory lockFactory)
Deprecated.Constructs an emptyDirectory
with the givenLockFactory
.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
close()
Deprecated.Closes the store to future operations, releasing associated memory.IndexOutput
createOutput(String name, IOContext context)
Deprecated.Creates a new, empty file in the directory and returns anIndexOutput
instance for appending data to this file.IndexOutput
createTempOutput(String prefix, String suffix, IOContext context)
Deprecated.Creates a new, empty, temporary file in the directory and returns anIndexOutput
instance for appending data to this file.void
deleteFile(String name)
Deprecated.Removes an existing file in the directory.long
fileLength(String name)
Deprecated.Returns the length in bytes of a file in the directory.boolean
fileNameExists(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 RAMFile
newRAMFile()
Deprecated.Returns a newRAMFile
for storing data.IndexInput
openInput(String name, IOContext context)
Deprecated.Returns a stream reading an existing file.long
ramBytesUsed()
Deprecated.Return total size in bytes of all files in this directory.void
rename(String source, String dest)
Deprecated.Renamessource
file todest
file wheredest
must not already exist in the directory.void
sync(Collection<String> names)
Deprecated.Ensures that any writes to these files are moved to stable storage (made durable).void
syncMetaData()
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 emptyDirectory
with the givenLockFactory
.
-
RAMDirectory
public RAMDirectory(FSDirectory dir, IOContext context) throws IOException
Deprecated.Creates a newRAMDirectory
instance from a differentDirectory
implementation. 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
RAMDirectory
instance is fully independent from the originalDirectory
(it is a complete copy). Any subsequent changes to the originalDirectory
will not be visible in theRAMDirectory
instance.- Parameters:
dir
- aDirectory
value- Throws:
IOException
- if an error occurs
-
-
Method Detail
-
listAll
public final String[] listAll()
Deprecated.Description copied from class:Directory
Returns 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:
fileLength
in 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:
ramBytesUsed
in interfaceAccountable
-
getChildResources
public Collection<Accountable> getChildResources()
Deprecated.Description copied from interface:Accountable
Returns nested resources of this class. The result should be a point-in-time snapshot (to avoid race conditions).- Specified by:
getChildResources
in interfaceAccountable
- See Also:
Accountables
-
deleteFile
public void deleteFile(String name) throws IOException
Deprecated.Description copied from class:Directory
Removes an existing file in the directory. This method must throw eitherNoSuchFileException
orFileNotFoundException
ifname
points to a non-existing file.- Specified by:
deleteFile
in 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:Directory
Creates a new, empty file in the directory and returns anIndexOutput
instance for appending data to this file. This method must throwFileAlreadyExistsException
if the file already exists.- Specified by:
createOutput
in 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:Directory
Creates a new, empty, temporary file in the directory and returns anIndexOutput
instance for appending data to this file. The temporary file name (accessible viaIndexOutput.getName()
) will start withprefix
, end withsuffix
and have a reserved file extension.tmp
.- Specified by:
createTempOutput
in classDirectory
- Throws:
IOException
-
newRAMFile
protected RAMFile newRAMFile()
Deprecated.Returns a newRAMFile
for storing data. This method can be overridden to return differentRAMFile
impls, that e.g. overrideRAMFile.newBuffer(int)
.
-
sync
public void sync(Collection<String> names) throws IOException
Deprecated.Description copied from class:Directory
Ensures 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:
sync
in classDirectory
- Throws:
IOException
- See Also:
Directory.syncMetaData()
-
rename
public void rename(String source, String dest) throws IOException
Deprecated.Description copied from class:Directory
Renamessource
file todest
file wheredest
must not already exist in the directory. It is permitted for this operation to not be truly atomic, for example bothsource
anddest
can be visible temporarily inDirectory.listAll()
. However, the implementation of this method must ensure the content ofdest
appears as the entiresource
atomically. So oncedest
is visible for readers, the entire content of previoussource
is visible. This method is used by IndexWriter to publish commits.- Specified by:
rename
in classDirectory
- Throws:
IOException
-
syncMetaData
public void syncMetaData() throws IOException
Deprecated.Description copied from class:Directory
Ensures that directory metadata, such as recent file renames, are moved to stable storage.- Specified by:
syncMetaData
in 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:
openInput
in 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:Directory
Returns a set of files currently pending deletion in this directory.- Specified by:
getPendingDeletions
in classDirectory
-
-