Java堆空间错误

时间:2017-03-23 12:54:42

标签: java indexing lucene web-crawler out-of-memory

我不是程序员,我只想重新设置文件服务器。 这是正常的,索引过程需要大量内存,所以当我开始索引时,我输入代码-Xmx512m。但几个小时后,我收到了这些消息:

java.lang.OutOfMemoryError: Java heap space
    at org.apache.lucene.util.UnicodeUtil.UTF16toUTF8(UnicodeUtil.java:383)
    at org.apache.lucene.store.DataOutput.writeString(DataOutput.java:112)
    at org.apache.lucene.index.FieldsWriter.writeField(FieldsWriter.java:212)
    at org.apache.lucene.index.StoredFieldsWriterPerThread.addField(StoredFieldsWriterPe
rThread.java:58)
    at org.apache.lucene.index.DocFieldProcessorPerThread.processDocument(DocFieldProces
sorPerThread.java:263)
    at org.apache.lucene.index.DocumentsWriter.updateDocument(DocumentsWriter.java:766)
    at org.apache.lucene.index.IndexWriter.addDocument(IndexWriter.java:2060)
    at org.apache.lucene.index.IndexWriter.addDocument(IndexWriter.java:2034)
    at net.sf.regain.crawler.IndexWriterManager.createNewIndexEntry(IndexWriterManager.j
ava:758)
    at net.sf.regain.crawler.IndexWriterManager.addToIndex(IndexWriterManager.java:732)
    at net.sf.regain.crawler.Crawler.run(Crawler.java:575)
    at net.sf.regain.crawler.Main.main(Main.java:128)

我使用的是jdk 1.8和tomcat7 它运行在具有4GB内存的Windows Server 2016上,但我不认为这个过程需要超过1GB的内存...... 现在我不知道如何解决这个问题...... 有谁知道如何解决这个问题?

3 个答案:

答案 0 :(得分:0)

尝试 -Xmx512m 而不是 -Xnx512m

答案 1 :(得分:0)

使用-Xmx运行,它设置堆的最大大小。

See here for details

Ex:-Xmx512m

答案 2 :(得分:-1)

请建议您使用的是哪个版本的Java? 以下是您可以申请的一些解决方案.. - >增加堆和permGem空间(临时修复) - >查找内存泄漏,修复它然后正确的高性能代码。 - >捕获java.lang.OutOfMemoryError并释放所有可能使用大量内存,关闭连接等的资源,然后执行System.gc()。 - >使用JDK 1.8:þ欢迎使用MetaSpace - >解决方案是在启动Tomcat时将这些标志添加到JVM命令行: -XX:+ CMSClassUnloadingEnabled -XX:+ CMSPermGenSweepingEnabled

希望这会对你有所帮助: - )