运行coreNlp工具时出现OutOfMemoryError

时间:2016-11-27 17:53:52

标签: java stanford-nlp

我知道在SO上已经有很多关于这个问题的讨论,但没有一个能解决我的问题。我有一个文件test.txt,我想对它进行一些情绪分析。每行一个句子的输入文件格式。然后我按照以下命令运行该工具:

java  -cp "../*" -mx1g edu.stanford.nlp.sentiment.SentimentPipeline -file test.txt 

它开始以奇怪的方式运行并打印我文件的内容。过了一会儿,它会抛出这个错误:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

我也尝试过:

java -Xms1024m -Xmx2048m -cp "../*" -mx1g edu.stanford.nlp.sentiment.SentimentPipeline -file test.txt

但它仍然无效。 顺便说一下,我在命令行而不是eclipse中运行该工具。所以我认为这不是关于日食。 你能帮我解决这个问题吗?提前谢谢!

2 个答案:

答案 0 :(得分:0)

您可以在命令中将-mx1g更改为-mx4g

尝试使用以下命令:

java -Xms1024m -Xmx2048m -cp "../*" -mx4g edu.stanford.nlp.sentiment.SentimentPipeline -file test.txt

建议#1:

您可以永久性地增加-Xms和-Xmx尺寸

<强>窗:

SET _JAVA_OPTIONS = -Xms1024m -Xmx2048m

Linux的:

export _JAVA_OPTIONS="-Xms1024m -Xmx2048m"

之后你可以简单地运行命令

java -cp "../*" -mx4g edu.stanford.nlp.sentiment.SentimentPipeline -file test.txt

希望它能解决您的问题。如果它无法解决您的问题,请将-Xmx大小增加到-Xmx6g

建议#2:

您可以使用Java8。他们使用元空间来堆。因此,那里不会发生堆空间错误。

资源链接:

how to increase java heap memory permanently?

UPDATE:

请查看以下命令

java -cp "../*" -Xmx4g edu.stanford.nlp.pipeline.StanfordCoreNLPClient -annotators tokenize,ssplit,pos,lemma,ner,parse,dcoref -file test.txt

或者您可以在命令中使用-threads 1使其成为单线程。

资源链接:

  1. Stanford NLP - OpenIE out of memory when processing list of files
  2. CoreNLP Server Conf

答案 1 :(得分:0)

这意味着没有足够的空间来分配新对象。就像在这种情况下,垃圾收集器不能腾出空间来容纳新对象。