Lucene内存使用情况

时间:2015-04-10 08:42:13

标签: java lucene jpype

我正在索引约250,000个文档,但是在大约200.000之后命中OOME(在此之前,它会非常缓慢,直到达到GC限制)。

代码看起来像这样(我使用的是jpype):

def index_documents(self, documents):
    writer = IndexWriter(self.store, self.config)
    for document in documents:
        self.indexDocument(document,writer)

    writer.commit()
    writer.close()

def indexDocument(self, document, writer):
    doc = Document()
    doc.add(Field('text',document['text'],TextField.TYPE_STORED))
    doc.add(Field('title',document['title'],TextField.TYPE_STORED))
    doc.add(Field('url',document['url'],StringField.TYPE_STORED))
    doc.add(Field('domain',document['domain'],StringField.TYPE_STORED))
    doc.add(Field('category',document['category'],StringField.TYPE_STORED))

    writer.addDocument(doc)

我希望文档和字段会被刷新,然后每隔一段时间就会收集一次垃圾,所以不可能打到OOME。相反,某处似乎有泄漏。我怎样才能知道这是lucene还是jpype的问题?假设这是一个lucene问题,我有什么可能减少内存使用?我可以诊断冲洗发生的频率或类似情况吗?

1 个答案:

答案 0 :(得分:0)

正如bastian评论的那样更新JPype解决了这个问题。该修复程序现在实际上已在0.6.0版本中发布。

此外,我在第三方组件中有内存泄漏,如果没有Jpype错误,我可能无法找到它; - )