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