2012-01-06 12 views
16

Sto utilizzando SBT 0.7.7. Quando faccio una modifica al mio progetto di sollevamento e ri-compilazione tramite:Errore di memoria insufficiente con SBT durante l'esecuzione del progetto di sollevamento

  1. jetty-stop
  2. compile
  3. jetty-run

ottengo il seguente errore:

Error during sbt execution: java.lang.OutOfMemoryError: PermGen space

I avere la seguente definizione all'interno di /opt/local/bin/sbt-0.7:

# Is the location of the SBT launcher JAR file. 
LAUNCHJAR="/opt/local/share/sbt-0.7/sbt-launch-0.7.7.jar" 

# Ensure enough heap space is created for SBT. 
if [ -z "$JAVA_OPTS" ]; then 
JAVA_OPTS="-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -XX:MaxPermSize=256m -Xmx512M -Xss2M" 
fi 

# Assume java is already in the shell path. 
exec java $JAVA_OPTS -jar "$LAUNCHJAR" "[email protected]" 
+0

Possibile duplicato: [questa domanda] (http://stackoverflow.com/questions/1451648/permgen-problems-with-lift-and-jetty). – Philippe

+0

Grazie Philippe. Ho già provato ad aggiungere queste opzioni al mio sbt-0.7 ma ottengo ancora quegli errori. – Hahnemann

risposta

5

È necessario consentire a java di allocare più memoria.

# You may need more or less depending on your project. 
export SBT_OPTS=-Xmx1024M 

È possibile rivedere anche alcune di quelle altre impostazioni di memoria. Sto usando SBT 0.11.2, e non ho altro che Xmx specificato.

Per inciso, sarei sorpreso se in realtà hai problemi di GC durante una compilazione. Modifica della strategia di raccolta GC più rilevante per i processi più lunghi.

+2

"Sarei sorpreso". Quindi suppongo che lo sia, dal momento che questo mi succede sempre durante la compilazione di un grande progetto. "più rilevante per processi più lunghi" .... hai mai compilato Scala? –

38

Il PermGen è solo uno dei tanti spazi che nel complesso compongono l'Heap. È possibile aumentare l'intero heap fino a quando la porzione allocata è abbastanza grande per le proprie esigenze oppure è possibile semplicemente aumentare l'allocazione verso lo spazio PermGen. Per fare quest'ultima, utilizzare

Per sbt 0.12.0

export SBT_OPTS=-XX:MaxPermSize=256m

Sarebbe meglio mettere questo nel vostro .bash_profile (supponendo che si sta utilizzando bash)

Per sbt 0.7

Nel tuo caso aumentare -XX: MaxPermSize a qualcosa di più di 256m. Tenendo presente che richiedere più di 256 m suggerisce che potrebbero esserci altri problemi.

+0

'SBT_OPTS = -XX: MaxPermSize = 256m' non ha funzionato per sbt' 0.13.9'. 'SBT_OPTS = -Xmx1024M' ha fatto. – robert

Problemi correlati