索引时,Lucene 经常会泄露未封闭的 reader、writer 等。
有没有办法在每次迭代结束时关闭 Lucene 中的所有 Closeables?
恐怕没有。
Lucene 为您提供IndexSearcher
,IndexReader
和IndexWriter
. 不关闭它们中的任何一个只会导致文件描述符泄漏,并且几乎没有办法解决它。虽然有一些技巧:
SearcherManager
. 然而,这仍然需要调用manager.release(s)
并且不适用于作者/读者。.close()
调用放入终结器中。是的,我知道它很脏。但它有效!AutoCloseable
在 try-with-resources 语句中实现和使用它们,以便自动关闭。理想情况下,所有这些类都应该实现AutoCloseable
它们自己,并且希望它们在 Lucene 切换到 Java 7 时实现。