1

索引时,Lucene 经常会泄露未封闭的 reader、writer 等

有没有办法在每次迭代结束时关闭 Lucene 中的所有 Closeables?

4

1 回答 1

2

恐怕没有。

Lucene 为您提供IndexSearcher,IndexReaderIndexWriter. 不关闭它们中的任何一个只会导致文件描述符泄漏,并且几乎没有办法解决它。虽然有一些技巧:

  1. 使用SearcherManager. 然而,这仍然需要调用manager.release(s)并且不适用于作者/读者。
  2. 扩展这些类并将.close()调用放入终结器中。是的,我知道它很脏。但它有效!
  3. 如果您使用的是 Java 7,则可以扩展这些类并AutoCloseable在 try-with-resources 语句中实现和使用它们,以便自动关闭。理想情况下,所有这些类都应该实现AutoCloseable它们自己,并且希望它们在 Lucene 切换到 Java 7 时实现。
于 2013-01-21T11:40:34.453 回答