我一直将我的整个索引放入内存中RAMDirectory
以提高性能,并且它运行良好,直到我的索引不断增长。现在我得到了OutOfMemoryException
。虽然我在磁盘上的索引为 1.24GB,但我怀疑对象的对象大小RAMDirectory
最终超过了 .NET 2GB 对象大小限制,因此引发了异常。另一个原因可能是虚拟地址空间太碎片化,无法为我的对象找到足够大的洞。
我很想继续使用RAMDirectory
. 我怎么能在避免的同时做到这一点OutOfMemoryException
?
另请注意,当我编写索引时,我会调用IndexWriter.Optimize
,因此整个索引都在一个大文件中。