索引付けの際、Lucene はクローズされていないリーダー、ライターなどをリークすることがよくありました。
各反復の最後に Lucene のすべての Closeables を閉じる方法はありますか?
索引付けの際、Lucene はクローズされていないリーダー、ライターなどをリークすることがよくありました。
各反復の最後に Lucene のすべての Closeables を閉じる方法はありますか?
何もないのではないかと思います。
LuceneはあなたIndexSearcher
に、、IndexReader
を与えますIndexWriter
。それらのいずれも閉じないと、ファイル記述子のリークが発生するだけであり、事実上それを回避する方法はありません。ただし、いくつかのテクニックがあります。
SearcherManager
ます。ただし、これはまだ呼び出す必要がmanager.release(s)
あり、ライター/リーダーには適用されません。.close()
し、ファイナライザーに呼び出しを入れます。そして、はい、私はそれが汚れていることを知っています。しかし、それは機能します!AutoCloseable
し、try-with-resourcesステートメントで実装して使用できるため、自動的に終了します。理想的には、これらすべてのクラスがAutoCloseable
自分自身を実装する必要があり、LuceneがJava7に切り替えたときに実装されることを願っています。