有没有办法关闭Lucene的所有Closeables?

时间:2013-01-14 09:40:14

标签: lucene

编制索引时,通常Lucene leaked unclosed readers, writers, etc

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

1 个答案:

答案 0 :(得分:2)

我担心没有。

Lucene为您提供IndexSearcherIndexReaderIndexWriter。不关闭它们中的任何一个只会导致文件描述符泄漏,并且几乎没有办法解决它。但是技术很少:

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