2012-01-06 2 views
16

Я использую SBT 0.7.7. Когда я делаю изменения в моей Lift проекта и повторно компилировать через:Ошибка памяти при использовании SBT при выполнении проекта лифта

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

Я получаю следующее сообщение об ошибке:

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

I в /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

Возможный дубликат: [этот вопрос] (http://stackoverflow.com/questions/1451648/permgen-problems-with-lift-and-jetty). – Philippe

+0

Спасибо, Филипп. Я уже пытался добавить эти параметры в свой sbt-0.7, но я все еще получаю эти ошибки. – Hahnemann

ответ

5

Вам необходимо разрешить java выделять больше памяти.

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

Вы также можете просмотреть некоторые из этих параметров памяти. Я запускаю SBT 0.11.2, и у меня нет ничего, кроме Xmx.

В стороне, я был бы удивлен, если у вас на самом деле есть какие-либо проблемы с GC во время компиляции. Изменение стратегии сбора GC более актуально для более длительных процессов.

+2

«Я был бы удивлен». Тогда, я полагаю, вы, так как это происходит все время для меня при компиляции большого проекта. «более уместен для более длительных процессов» ... Вы когда-нибудь компилировали Scala? –

38

PermGen - это просто одно из многих пространств, которые в целом составляют кучу. Вы можете увеличить всю кучу до тех пор, пока выделенная часть не будет достаточно большой для ваших нужд, или вы можете просто увеличить выделение в пространстве PermGen. Для того, чтобы сделать этот последний, использовать

Для SBT 0.12.0

export SBT_OPTS=-XX:MaxPermSize=256m

Было бы лучше, чтобы поместить это в .bash_profile (если вы используете Баш)

Для sbt 0,7

В вашем случае увеличьте -XX: MaxPermSize на что-то более 256 м. Помня о том, что потребность в более чем 256 м предполагает, что могут быть и другие проблемы.

+0

'SBT_OPTS = -XX: MaxPermSize = 256m' не работает для sbt' 0.13.9'. 'SBT_OPTS = -Xmx1024M'. – robert

Смежные вопросы