2
package src;

import java.util.Properties;
import edu.stanford.nlp.pipeline.StanfordCoreNLP;

public class NLPTest {
    public static void main(String[] args){
        Properties props = new Properties();
        props.put("annotators", "tokenize, ssplit, pos, lemma, ner, parse, dcoref");
        StanfordCoreNLP coreNLP = new StanfordCoreNLP(props);
    }

}

このサンプル コードを Eclipse で実行しましたが、次のエラーが表示されます。 .lang.OutOfMemoryError: Java ヒープ領域

Command Propmt から Stanford CoreNLP を実行すると、すべてが完全に機能します。誰でも解決策を教えてもらえますか? Eclipseへのメモリ割り当てに関連していますか?

4

4 に答える 4

2

eclipse.iniEclipseの問題は、Eclipseが取得するメモリの量(ファイル)ではなく、Eclipseから実行されるJavaプログラムが取得するメモリの量を設定する必要があることです。これは、他のスタックオーバーフローの回答Run|Run Configurationsで詳しく説明されているように指定されています。

しかしまた、32ビットJVMで実行していますか?Stanford CoreNLPを正常に実行するために十分なメモリを割り当てるには、64ビットJVMで実行する必要がある場合があります。

于 2012-07-11T15:08:16.937 に答える
1

Eclipseの場合Eclipse.ini、Eclipse.exeの近くにファイルがあります

-Xmn128m
-Xms256m
-Xmx768m
-Xss1m
-XX:PermSize=128m
-XX:MaxPermSize=384m

ここでヒープサイズを変更すると、プログラムはOOMしません

于 2012-07-03T05:36:23.170 に答える
0

OOMまたはOOME(OutOfMemoryError)は、JVMのメモリが不足したことを意味します。これが発生した場合、基本的に2つの選択肢があります。

1. -Xmx VM引数を使用して、JVMがより多くのメモリを使用できるようにします。たとえば、JVMが1 GB(1024 MB)のメモリを使用できるようにするには、次のようにします。

java -Xmx1024m HelloWorld

2.アプリケーションを改善/修正して、使用するメモリを減らします

     Start the application with the VM argument -XX:+HeapDumpOnOutOfMemoryError. This will tell the VM to produce a heap dump when a OOM occurs:
java -XX:+HeapDumpOnOutOfMemoryError ...

コマンドプロンプトでこのように実行することをお勧めします

java -Xms64m -Xmx256m HelloWorld

ここでは -Xms64m、最小ヒープサイズ64mbと-Xmx256m最大ヒープサイズ256mbを代わりにHelloworld配置します。classname

于 2012-07-03T05:17:45.987 に答える