gpt4 book ai didi

java - Lucene 内存不足

转载 作者:搜寻专家 更新时间:2023-11-01 03:32:57 24 4
gpt4 key购买 nike

我正在使用 Lucene v4.10.4。我的索引很大,可能超过几 GB。所以我在初始化 IndexSearcher 时得到 OutOfMemoryError:

try (Directory dir = FSDirectory.open(new File(indexPath))) { 

//Out of Memory here!
IndexSearcher searcher = new IndexSearcher(DirectoryReader.open(indexDir));

如何告诉 Lucene 的 DirectoryReader 不要一次加载超过 256 MB 的内存?

日志

Caused by: java.lang.OutOfMemoryError: Java heap space
at org.apache.lucene.util.fst.BytesStore.<init>(BytesStore.java:68)
at org.apache.lucene.util.fst.FST.<init>(FST.java:386)
at org.apache.lucene.util.fst.FST.<init>(FST.java:321)
at org.apache.lucene.codecs.blocktree.FieldReader.<init>(FieldReader.java:85)
at org.apache.lucene.codecs.blocktree.BlockTreeTermsReader.<init>(BlockTreeTermsReader.java:192)
at org.apache.lucene.codecs.lucene41.Lucene41PostingsFormat.fieldsProducer(Lucene41PostingsFormat.java:441)
at org.apache.lucene.codecs.perfield.PerFieldPostingsFormat$FieldsReader.<init>(PerFieldPostingsFormat.java:197)
at org.apache.lucene.codecs.perfield.PerFieldPostingsFormat.fieldsProducer(PerFieldPostingsFormat.java:254)
at org.apache.lucene.index.SegmentCoreReaders.<init>(SegmentCoreReaders.java:120)
at org.apache.lucene.index.SegmentReader.<init>(SegmentReader.java:108)
at org.apache.lucene.index.StandardDirectoryReader$1.doBody(StandardDirectoryReader.java:62)
at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:923)
at org.apache.lucene.index.StandardDirectoryReader.open(StandardDirectoryReader.java:53)
at org.apache.lucene.index.DirectoryReader.open(DirectoryReader.java:67)

最佳答案

首先,您应该检查 JVM 的当前堆大小。

java -XX:+PrintFlagsFinal -version | grep MaxHeapSize

如果这个数字对于您的用例不合理,您应该在使用 java 命令的 -Xmx 选项运行程序时增加它。分配 8GB 堆内存的示例命令如下所示:

java -Xmx8g -jar your_jar_file 

希望这对您有所帮助。

关于java - Lucene 内存不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43141378/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com