我使用的是SBT 0.7.7。当我更改Lift项目并通过以下方式重新编译时:
jetty-stop
compile
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" "$@"
发布于 2012-09-19 04:51:35
PermGen只是组成堆的众多空间中的一个。您可以增加整个堆,直到分配的部分足以满足您的需求,也可以简单地增加对PermGen空间的分配。要实现后者,请使用
适用于sbt 0.12.0的
导出SBT_OPTS=-XX:MaxPermSize=256m
最好把它放到你的.bash_profile中(假设你使用的是bash)
适用于SBT0.7的
在您的情况下,将-XX:MaxPermSize增加到256m以上。请记住,需要超过2.56亿表明可能存在其他问题。
发布于 2012-07-14 09:19:18
您需要允许java分配更多的内存。
# You may need more or less depending on your project.
export SBT_OPTS=-Xmx1024M
您可能还会重新访问其他一些内存设置。我正在运行SBT 0.11.2,但只指定了Xmx。
顺便说一句,如果你在编译过程中真的遇到任何GC问题,我会很惊讶。更改GC收集策略,使其与运行时间更长的进程更相关。
https://stackoverflow.com/questions/8751936
复制相似问题