提问者:小点点

内存不足运行 coreNlp 工具时出错


我知道在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个答案

匿名用户

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

匿名用户

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

尝试使用以下命令:

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

您可以永久增加-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

可以用Java8。他们将元空间用于堆。因此,不会出现堆空间错误。

如何永久增加Java堆内存?

请使用以下命令进行检查

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

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

    < li>Stanford NLP - OpenIE在处理文件列表时内存不足 < li>CoreNLP服务器配置