J’utilise SBT 0.12.0. J’ai lu d’autres réponses sur le dépassement de stack et je les ai suivies, mais aucune n’aide, par exemple:
ForkRun
– Je n’ai pas observé de processus en fourchette lors de mon utilisation de sbt JAVA_OPTS
– elle est définie mais la ligne de commande de processus de sbt ne semble pas l’utiliser du tout. sbt -J-Xmx2G
ajoute le paramètre à la ligne de commande du processus sbt. Toutefois, l’ancienne valeur -Xmx1536m
est utilisée par sbt au lieu du paramètre ajouté. Est-ce que je manque quelque chose? Comment définir la taille du tas pour sbt 0.12, à la fois en test et en run
?
Vous avez besoin de SBT_OPTS
, voici ce que j’utilise dans mon fichier .bash_profile:
export SBT_OPTS="-Xmx1536M -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=2G -Xss2M -Duser.timezone=GMT"
MISE À JOUR: Pour obtenir votre espace de 2G, vous pouvez utiliser ceci:
export SBT_OPTS="-Xmx2G -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=2G -Xss2M -Duser.timezone=GMT"
NOTE: SBT DOIT ÊTRE DERNIÈRE VERSION
Les anciennes versions de sbt
contiennent des bogues qui remplacent ces parameters, utilisent brew upgrade sbt
pour la dernière version de sbt
pour Mac (en supposant une installation par armsage) (IDK pour Linux). https://github.com/sbt/sbt/issues/2945#issuecomment-277490848
En mars 2015, si vous utilisez sbt sur OSX avec Homebrew, vous devez éditer le fichier /usr/local/etc/sbtopts
par exemple
# set memory options # #-mem -mem 2048
“sbt -mem 23000 run” fonctionne pour moi.
J’ai trouvé la solution. Quelle que soit la manière dont vous spécifiez la taille du segment de mémoire JVM, cela ne fonctionnera jamais car le fichier exécutable de SBT a déjà été remplacé.
Il y a une ligne dans l’exécutable de SBT qui dit:
. /usr/share/sbt/sbt-launch-lib.bash
J’ai donc édité le fichier:
# run sbt execRunner "$java_cmd" \ ${SBT_OPTS:-$default_sbt_opts} \ - $(get_mem_opts $sbt_mem) \ ${java_opts} \ ${java_args[@]} \ -jar "$sbt_jar" \ "${sbt_commands[@]}" \ "${residual_args[@]}"
Retirez la ligne.
Maintenant, lorsque vous exécutez SBT, il ne remplacera plus vos parameters de taille de segment JVM. Vous pouvez spécifier les parameters de taille de segment en utilisant la réponse de @ Noan.
Ou bien:
sbt -J-Xmx4G -J-Xms4G
Sur Windows, pour sbt 0.13.9.2, vous devez définir JAVA_OPTS
sur les options jvm souhaitées.
> set JAVA_OPTS=-Xmx1G > sbt assembly
Le script sbt.bat
charge ses valeurs par défaut de conf\sbtconfig.txt
dans CFG_OPTS
mais utilisera JAVA_OPTS
place s’il est défini.
Extraits pertinents de sbt.bat
:
rem FIRST we load the config file of extra options. set FN=%SBT_HOME%\..\conf\sbtconfig.txt set CFG_OPTS= FOR /F "tokens=* eol=# usebackq delims=" %%i IN ("%FN%") DO ( set DO_NOT_REUSE_ME=%%i rem ZOMG (Part #2) WE use !! here to delay the expansion of rem CFG_OPTS, otherwise it remains "" for this loop. set CFG_OPTS=!CFG_OPTS! !DO_NOT_REUSE_ME! )
. . . (sauter) . .
rem We use the value of the JAVA_OPTS environment variable if defined, rather than the config. set _JAVA_OPTS=%JAVA_OPTS% if "%_JAVA_OPTS%"=="" set _JAVA_OPTS=%CFG_OPTS% :run "%_JAVACMD%" %_JAVA_OPTS% %SBT_OPTS% -cp "%SBT_HOME%sbt-launch.jar" xsbt.boot.Boot %*
Je cherchais à résoudre un problème comme celui-ci sous Mac OS X avec une installation homebrew de SBT. Si vous avez installé SBT via homebrew, vous êtes dans le coup puisque le fichier /usr/local/bin/sbt
ressemble à
#!/bin/sh test -f ~/.sbtconfig && . ~/.sbtconfig exec java -Xmx512M ${SBT_OPTS} -jar /usr/local/Cellar/sbt/0.12.3/libexec/sbt-launch.jar "$@"
Cela signifie que tous les parameters que vous avez placés dans SBT_OPTS
(votre -Xmx aura la priorité). De plus, la première ligne du script exécutera toutes les commandes de ~/.sbtconfig
si elles existent, donc il serait peut-être préférable de placer vos options SBT si vous jouez un peu avec elles. Vous n’aurez pas à source ~/.bash_profile
chaque fois que vous apporterez une modification à SBT_OPTS
Si vous exécutez sbt depuis PowerShell, définissez la variable d’environnement SBT_OPTs
, comme SBT_OPTs
:
$env:SBT_OPTS="-Xms512M -Xmx1024M -Xss2M -XX:MaxMetaspaceSize=1024M"
Puis lancez:
sbt
Pour SBT version 1.0.4 sous Windows, les parameters JVM par défaut proviennent du fichier sbt\conf\sbtconfig.txt
. Modifiez simplement les valeurs ici. Changez -Xmx512M
à -Xmx2048M
.
Ce n’est pas la seule source d’options JVM pour SBT. D’autres peuvent être trouvés en inspectant sbt.bat
. Un moyen simple de diagnostiquer, d’où proviennent les parameters, est de commenter cette ligne dans un fichier batch: @echo off
.