我知道在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中运行该工具。所以我认为这不是关于日食。 你能帮我解决这个问题吗?提前谢谢!
答案 0 :(得分:0)
您可以在命令中将-mx1g
更改为-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。他们使用元空间来堆。因此,那里不会发生堆空间错误。
how to increase java heap memory permanently?
请查看以下命令
java -cp "../*" -Xmx4g edu.stanford.nlp.pipeline.StanfordCoreNLPClient -annotators tokenize,ssplit,pos,lemma,ner,parse,dcoref -file test.txt
或者您可以在命令中使用-threads 1
使其成为单线程。
答案 1 :(得分:0)
这意味着没有足够的空间来分配新对象。就像在这种情况下,垃圾收集器不能腾出空间来容纳新对象。