ошибка нехватки памяти в куче

Я пытаюсь запустить пакет coreNLP со следующей программой

package corenlp;
import edu.stanford.nlp.pipeline.*;
import java.io.IOException;
/**
 *
 * @author Karthi
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        // TODO code application liogic here
        String str="-cp stanford-corenlp-2010-11-12.jar:stanford-corenlp-models-2010-11-06.jar:xom-1.2.6.jar:jgrapht-0.7.3.jar -Xms3g edu.stanford.nlp.pipeline.StanfordCoreNLP [ -props <Main> ] -file <input.txt>";
        args=str.split(" ");
        StanfordCoreNLP scn=new StanfordCoreNLP();
        scn.main(args);
    }

}

Я не уверен, что сам код правильный, но я получаю следующую ошибку

    Searching for resource: StanfordCoreNLP.properties
Searching for resource: edu/stanford/nlp/pipeline/StanfordCoreNLP.properties
Loading POS Model [edu/stanford/nlp/models/pos-tagger/wsj3t0-18-left3words/left3words-distsim-wsj-0-18.tagger] ... Loading default properties from trained tagger edu/stanford/nlp/models/pos-tagger/wsj3t0-18-left3words/left3words-distsim-wsj-0-18.tagger
Reading POS tagger model from edu/stanford/nlp/models/pos-tagger/wsj3t0-18-left3words/left3words-distsim-wsj-0-18.tagger ... Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
        at edu.stanford.nlp.tagger.maxent.MaxentTagger.readModelAndInit(MaxentTagger.java:704)
        at edu.stanford.nlp.tagger.maxent.MaxentTagger.readModelAndInit(MaxentTagger.java:649)
        at edu.stanford.nlp.tagger.maxent.MaxentTagger.<init>(MaxentTagger.java:268)
        at edu.stanford.nlp.tagger.maxent.MaxentTagger.<init>(MaxentTagger.java:228)
        at edu.stanford.nlp.pipeline.POSTaggerAnnotator.loadModel(POSTaggerAnnotator.java:57)
        at edu.stanford.nlp.pipeline.POSTaggerAnnotator.<init>(POSTaggerAnnotator.java:44)
        at edu.stanford.nlp.pipeline.StanfordCoreNLP$4.create(StanfordCoreNLP.java:441)
        at edu.stanford.nlp.pipeline.StanfordCoreNLP$4.create(StanfordCoreNLP.java:434)
        at edu.stanford.nlp.pipeline.AnnotatorPool.get(AnnotatorPool.java:62)
        at edu.stanford.nlp.pipeline.StanfordCoreNLP.construct(StanfordCoreNLP.java:309)
        at edu.stanford.nlp.pipeline.StanfordCoreNLP.<init>(StanfordCoreNLP.java:347)
        at edu.stanford.nlp.pipeline.StanfordCoreNLP.<init>(StanfordCoreNLP.java:337)
        at edu.stanford.nlp.pipeline.StanfordCoreNLP.<init>(StanfordCoreNLP.java:329)
        at edu.stanford.nlp.pipeline.StanfordCoreNLP.<init>(StanfordCoreNLP.java:319)
        at corenlp.Main.main(Main.java:22)
Java Result: 1

Я пытался указать эти значения в параметрах виртуальной машины в netbeans, но для каждого значения я получаю сообщение об ошибке

-Xms3g

run:
Error occurred during initialization of VM
Incompatible initial and maximum heap sizes specified
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)

-Xmx3g

run:
Error occurred during initialization of VM
Could not create the Java virtual machine.
Could not reserve enough space for object heap
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)

-Xms3g -Xmx4g

run:
Could not create the Java virtual machine.
Invalid maximum heap size: -Xmx4g
The specified size exceeds the maximum representable size.
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)

person karthi    schedule 18.01.2011    source источник
comment
Пожалуйста, продолжайте и примите некоторые из ваших предыдущих вопросов.   -  person The Scrum Meister    schedule 18.01.2011
comment
Спасибо, я принял ответы на мои предыдущие вопросы   -  person karthi    schedule 18.01.2011


Ответы (2)


На какой ОС вы это запускаете? Это 64 битная система? Если нет, то вы в значительной степени ограничены, когда дело доходит до того, сколько кучи вы можете выделить одному процессу Java. Попробуйте запустить с -Xms1024M -Xmx1024M и посмотрите, решит ли это вашу проблему.

person Sanjay T. Sharma    schedule 18.01.2011
comment
Да, это 64-битная система, и на веб-сайте Стэнфорда говорится, что ей нужно как минимум 3 ГБ места в куче. - person karthi; 18.01.2011
comment
он начал работать ... но через 5 минут снова сообщил об ошибке нехватки памяти - person karthi; 18.01.2011
comment
@karthi: Странно; если это 64-битная виртуальная машина в 64-битной ОС, это не должно быть проблемой. 3G ничего. Мы запускаем около 8 виртуальных машин, каждая из которых имеет около 4096M на наших рабочих серверах. Попробуйте удалить существующие параметры и использовать -Xms4096M -Xmx4096M. - person Sanjay T. Sharma; 18.01.2011
comment
да .. в этом проблема .. система поставляется с предустановленной 32-битной jvm .. теперь скачала 64-битную и установила, надеюсь, она будет работать - person karthi; 18.01.2011

попробуй с параметрами времени выполнения

java -cp -XX:+AggressiveHeap -jar jarfile

or

java -cp... -XX:MaxHeapFreeRatio=70 -XX:+UseLargePages -jar jarfile

person Dead Programmer    schedule 18.01.2011
comment
где я должен указать эти параметры? .. я новичок в этих параметрах кучи - person karthi; 18.01.2011