web-dev-qa-db-ja.com

リフトプロジェクトの実行時にSBTを使用してメモリ不足エラーが発生しました

SBT0.7.7を使用しています。 Liftプロジェクトに変更を加えて、次の方法で再コンパイルする場合:

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

次のエラーが発生します。

Sbt実行中のエラー:Java.lang.OutOfMemoryError:PermGenスペース

/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" "$@"
16
Hahnemann

PermGenは、全体としてヒープを構成する多くのスペースの1つにすぎません。割り当てられる部分がニーズに十分な大きさになるまでヒープ全体を増やすことも、PermGenスペースへの割り当てを増やすこともできます。後者を行うには、

sbt 0.12.0の場合

エクスポートSBT_OPTS = -XX:MaxPermSize = 256m

これを.bash_profileに入れるのが最善です(bashを使用していると仮定します)

sbt 0.7の場合

あなたの場合、-XX:MaxPermSizeを256m以上に増やしてください。 256m以上が必要な場合は、他の問題がある可能性があることを念頭に置いてください。

37
juice

より多くのメモリを割り当てるには、Javaを許可する必要があります。

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

これらの他のメモリ設定のいくつかも再検討するかもしれません。 SBT 0.11.2を実行していますが、Xmxしか指定されていません。

余談ですが、コンパイル中に実際にGCの問題が発生した場合は驚きます。実行時間の長いプロセスに関連するGC収集戦略を変更します。

6
Chewbarkla