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 sbtoptsoder sbtconfigabhängig von Ihrer sbt-Version festzulegen.
Da sbt 0.13.6 .sbtconfigveraltet ist . Ändern Sie /usr/local/etc/sbtoptsin 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 .sbtoptsDatei im Stammverzeichnis Ihres SBT-Projekts mit derselben Syntax wie in der /usr/local/etc/sbtoptsDatei 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=".." sbtwie 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"