Für gegabelte Prozesse sollten Sie sich Build.scala ansehen
Um die Java-Optionen für gegabelte Prozesse zu ändern, müssen Sie sie in der Build.scala (oder wie auch immer Sie Ihren Build genannt haben) wie folgt angeben:
val buildSettings = Defaults.defaultSettings ++ Seq(
//…
javaOptions += "-Xmx1G",
//…
)
Dadurch erhalten Sie die richtigen Optionen, ohne JAVA_OPTS global zu ändern, und es werden benutzerdefinierte JAVA_OPTS in ein von sbt generiertes Startskript eingefügt
Für nicht gegabelte Prozesse ist es am bequemsten, die Konfiguration über sbtopts
oder sbtconfig
abhängig von Ihrer sbt-Version festzulegen.
Da sbt 0.13.6 .sbtconfig
veraltet ist . Ändern Sie /usr/local/etc/sbtopts
in diese Richtung:
-J-Xms512M
-J-Xmx3536M
-J-Xss1M
-J-XX:+CMSClassUnloadingEnabled
-J-XX:+UseConcMarkSweepGC
-J-XX:MaxPermSize=724M
-J-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
Sie können auch eine .sbtopts
Datei im Stammverzeichnis Ihres SBT-Projekts mit derselben Syntax wie in der /usr/local/etc/sbtopts
Datei erstellen. Dies macht das Projekt in sich geschlossen.
Vor sbt 0.13.6 konnten Sie die Optionen in .sbtconfig für nicht gegabelte Prozesse festlegen :
Überprüfen Sie, wo sbt ist:
$ which sbt
/usr/local/bin/sbt
Schauen Sie sich den Inhalt an:
$ cat /usr/local/bin/sbt
#!/bin/sh
test -f ~/.sbtconfig && . ~/.sbtconfig
exec java ${SBT_OPTS} -jar /usr/local/Cellar/sbt/0.12.1/libexec/sbt-launch.jar "$@"
Stellen Sie die richtigen JVM-Optionen ein, um OOM zu verhindern (sowohl reguläres als auch PermGen):
$ cat ~/.sbtconfig
SBT_OPTS="-Xms512M -Xmx3536M -Xss1M
-XX:+CMSClassUnloadingEnabled
-XX:+UseConcMarkSweepGC -XX:MaxPermSize=724M"
Wenn Sie SBT_OPTS nur für die aktuelle Ausführung von sbt festlegen möchten, können Sie diese env SBT_OPTS=".." sbt
wie von Googol Shan vorgeschlagen verwenden. Oder Sie können die in Sbt 12 hinzugefügte Option verwenden : sbt -mem 2048
. Dies wird für längere Listen von Optionen unhandlich, kann jedoch hilfreich sein, wenn Sie unterschiedliche Projekte mit unterschiedlichen Anforderungen haben.
Beachten Sie, dass CMSClassUnloadingEnabled in Verbindung mit UseConcMarkSweepGC dazu beiträgt, den PermGen-Speicherplatz sauber zu halten. Abhängig von den von Ihnen verwendeten Frameworks kann es jedoch zu einem tatsächlichen Leck in PermGen kommen, das möglicherweise einen Neustart erzwingt.
javaOptions += "-Xmx1G"