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 sbtoptso sbtconfigdependiendo de su versión de sbt.
Dado que sbt 0.13.6 .sbtconfigestá en desuso . Modifique /usr/local/etc/sbtoptssiguiendo 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 .sbtoptsarchivo en la raíz de su proyecto SBT usando la misma sintaxis que en el /usr/local/etc/sbtoptsarchivo. 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=".." sbtcomo 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"