Index: lucene/core/src/java/org/apache/lucene/store/RAMDirectory.java =================================================================== --- lucene/core/src/java/org/apache/lucene/store/RAMDirectory.java (revision 1305791) +++ lucene/core/src/java/org/apache/lucene/store/RAMDirectory.java (working copy) @@ -34,6 +34,18 @@ * A memory-resident {@link Directory} implementation. Locking * implementation is by default the {@link SingleInstanceLockFactory} * but can be changed with {@link #setLockFactory}. + * + *
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 {@code 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
+ * {@link 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.
*/
public class RAMDirectory extends Directory implements Serializable {
@@ -59,10 +71,20 @@
* Creates a new RAMDirectory instance from a different
* Directory implementation. This can be used to load
* a disk-based index into memory.
- *
- * This should be used only with indices that can fit into memory. - *
- * Note that the resulting RAMDirectory instance is fully
+ *
+ *
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 {@code 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 + * {@link 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 original Directory (it is a
* complete copy). Any subsequent changes to the
* original Directory will not be visible in the