Per i processi biforcuti dovresti guardare Build.scala
Per modificare le opzioni java per i processi biforcati devi specificarli nel Build.scala (o qualunque cosa tu abbia chiamato la tua build) in questo modo:
val buildSettings = Defaults.defaultSettings ++ Seq(
//…
javaOptions += "-Xmx1G",
//…
)
Questo ti darà le opzioni corrette senza modificare JAVA_OPTS a livello globale e inserirà JAVA_OPTS personalizzato in uno script di avvio generato da sbt
Per i processi non biforcati è più conveniente impostare la configurazione tramite sbtopts
o in sbtconfig
base alla versione di sbt.
Poiché sbt 0.13.6 .sbtconfig
è deprecato . Modifica /usr/local/etc/sbtopts
seguendo queste linee:
-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
Puoi anche creare un .sbtopts
file nella radice del tuo progetto SBT usando la stessa sintassi del /usr/local/etc/sbtopts
file. Questo rende il progetto autonomo.
Prima di sbt 0.13.6 potevi impostare le opzioni in .sbtconfig per processi non forkati :
Controlla dove si trova sbt:
$ which sbt
/usr/local/bin/sbt
Guarda i contenuti:
$ 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 "$@"
Imposta le opzioni jvm corrette per prevenire l'OOM (sia regolare che PermGen):
$ cat ~/.sbtconfig
SBT_OPTS="-Xms512M -Xmx3536M -Xss1M
-XX:+CMSClassUnloadingEnabled
-XX:+UseConcMarkSweepGC -XX:MaxPermSize=724M"
Se vuoi impostare SBT_OPTS solo per l'esecuzione corrente di sbt puoi usare env SBT_OPTS=".." sbt
come suggerito da Googol Shan. Oppure si può utilizzare l'opzione aggiunta nel Sbt 12: sbt -mem 2048
. Questo diventa ingombrante per elenchi più lunghi di opzioni, ma potrebbe essere utile se hai progetti diversi con esigenze diverse.
Nota che CMSClassUnloadingEnabled in concerto con UseConcMarkSweepGC aiuta a mantenere pulito lo spazio PermGen, ma a seconda dei framework che usi potresti avere una perdita effettiva su PermGen, che alla fine forza un riavvio.
javaOptions += "-Xmx1G"