パフォーマンスを改善するためにインデックス全体をRAMDirectory
を使用してメモリに格納しています。インデックスが成長して成長するまでうまく機能しました。今私はOutOfMemoryException
を得ています。ディスク上の私のインデックスは1.24GBですが、私はRAMDirectory
オブジェクトのオブジェクトサイズが.NET 2GBオブジェクトサイズの制限を超えてしまい、例外がスローされると思われます。別の理由は、仮想アドレス空間が断片化しすぎて、オブジェクトに十分な大きさの穴が見つからないことがあります。RAMDirectoryを使用し、オブジェクトサイズが2GBを超える場合にOutOfMemoryExceptionを回避する方法
私はRAMDirectory
を使い続けたいと思います。 OutOfMemoryException
を避けてどうすればいいですか?
インデックスを書くときには、IndexWriter.Optimize
と呼びますので、インデックス全体が1つの大きなファイルになるようにしてください。
私はRAMDirectoryを使って検索するのに比べてスピードが飛躍的に向上すると思います。 私はそれを使わずに試してみると、インデックスを暖めるとパフォーマンスがかなり同等であることがわかります。ありがとう! –
ありがとう!インデックスを暖めるためには何が必要ですか? – Barka
64ビットオペレーティングシステムに切り替えます。 –