Pour les processus fourchus, vous devriez regarder Build.scala
Pour modifier les options java pour les processus forkés, vous devez les spécifier dans le Build.scala (ou ce que vous avez nommé votre build) comme ceci:
val buildSettings = Defaults.defaultSettings ++ Seq(
//…
javaOptions += "-Xmx1G",
//…
)
Cela vous donnera les options appropriées sans modifier globalement JAVA_OPTS, et cela mettra JAVA_OPTS personnalisé dans un script de démarrage généré par sbt
Pour les processus non fourchus , il est plus pratique de définir la configuration via sbtopts
ou en sbtconfig
fonction de votre version sbt.
Depuis sbt 0.13.6 .sbtconfig
est obsolète . Modifiez en /usr/local/etc/sbtopts
suivant ces lignes:
-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
Vous pouvez également créer un .sbtopts
fichier à la racine de votre projet SBT en utilisant la même syntaxe que dans le /usr/local/etc/sbtopts
fichier. Cela rend le projet autonome.
Avant sbt 0.13.6, vous pouviez définir les options dans .sbtconfig pour les processus non fourchus :
Vérifiez où se trouve sbt:
$ which sbt
/usr/local/bin/sbt
Regardez le contenu:
$ 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 "$@"
Définissez les options jvm correctes pour empêcher MOO (à la fois normal et PermGen):
$ cat ~/.sbtconfig
SBT_OPTS="-Xms512M -Xmx3536M -Xss1M
-XX:+CMSClassUnloadingEnabled
-XX:+UseConcMarkSweepGC -XX:MaxPermSize=724M"
Si vous souhaitez définir SBT_OPTS uniquement pour l'exécution actuelle de sbt, vous pouvez l'utiliser env SBT_OPTS=".." sbt
comme suggéré par Googol Shan. Vous pouvez également utiliser l'option ajoutée dans la société SBT 12: sbt -mem 2048
. Cela devient compliqué pour les listes d'options plus longues, mais cela peut aider si vous avez différents projets avec des besoins différents.
Notez que CMSClassUnloadingEnabled de concert avec UseConcMarkSweepGC aide à garder l'espace PermGen propre, mais en fonction des frameworks que vous utilisez, vous pouvez avoir une fuite réelle sur PermGen, qui finit par forcer un redémarrage.
javaOptions += "-Xmx1G"