Para procesos bifurcados, debe mirar Build.scala
Para modificar las opciones de java para procesos bifurcados, debe especificarlas en Build.scala (o como sea que haya llamado su compilación) de esta manera:
val buildSettings = Defaults.defaultSettings ++ Seq(
//…
javaOptions += "-Xmx1G",
//…
)
Esto le dará las opciones adecuadas sin modificar JAVA_OPTS globalmente, y colocará JAVA_OPTS personalizado en un script de inicio generado por sbt
Para procesos no bifurcados , es más conveniente establecer la configuración a través de sbtopts
o sbtconfig
dependiendo de su versión de sbt.
Dado que sbt 0.13.6 .sbtconfig
está en desuso . Modifique /usr/local/etc/sbtopts
siguiendo estas líneas:
-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
También puede crear un .sbtopts
archivo en la raíz de su proyecto SBT usando la misma sintaxis que en el /usr/local/etc/sbtopts
archivo. Esto hace que el proyecto sea autónomo.
Antes de sbt 0.13.6 , podía configurar las opciones en .sbtconfig para procesos no bifurcados :
Compruebe dónde está sbt:
$ which sbt
/usr/local/bin/sbt
Mira el contenido:
$ 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 "$@"
Configure las opciones jvm correctas para prevenir OOM (tanto regular como PermGen):
$ cat ~/.sbtconfig
SBT_OPTS="-Xms512M -Xmx3536M -Xss1M
-XX:+CMSClassUnloadingEnabled
-XX:+UseConcMarkSweepGC -XX:MaxPermSize=724M"
Si desea configurar SBT_OPTS solo para la ejecución actual de sbt, puede usarlo env SBT_OPTS=".." sbt
como lo sugiere Googol Shan. O puede utilizar la opción añadida en Sbt 12: sbt -mem 2048
. Esto se vuelve difícil de manejar para listas de opciones más largas, pero podría ayudar si tiene diferentes proyectos con diferentes necesidades.
Tenga en cuenta que CMSClassUnloadingEnabled en conjunto con UseConcMarkSweepGC ayuda a mantener limpio el espacio de PermGen, pero dependiendo de los marcos que use, es posible que tenga una fuga real en PermGen, que eventualmente fuerza un reinicio.
javaOptions += "-Xmx1G"