100 votes

Comment définir la taille du tas pour sbt ?

J'utilise SBT 0.12.0. J'ai lu d'autres réponses sur stack overflow et les ai suivies, mais aucune d'entre elles ne m'aide, par exemple :

  • créer ForkRun Je n'ai pas observé de processus de bifurcation pendant mon utilisation de sbt.
  • définir une variable d'environnement JAVA_OPTS - il est défini mais la ligne de commande du processus de sbt ne semble pas l'utiliser du tout.
  • sbt -J-Xmx2G ajoute le paramètre à la ligne de commande du processus sbt, cependant l'ancienne valeur -Xmx1536m est utilisé par sbt à la place du paramètre ajouté.

Est-ce que je rate quelque chose ? Comment puis-je définir la taille de la pile pour sbt 0.12, lorsque je fais à la fois des tests et des tests en ligne ? run ?

15voto

Choy Points 61

Sous Windows, pour sbt 0.13.9.2, vous devez configurer JAVA_OPTS aux options jvm que vous voulez.

> set JAVA_OPTS=-Xmx1G
> sbt assembly

En sbt.bat script charge ses valeurs par défaut à partir de conf\sbtconfig.txt en CFG_OPTS mais utilisera JAVA_OPTS à la place si elle est définie.

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 %*

11voto

Adrian Rodriguez Points 2208

Je cherchais à résoudre un problème de ce genre sur Mac OS X avec une installation homebrew de SBT. Si vous avez installé SBT via homebrew, vous êtes dans la bonne voie puisque la fonction /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 paramètres que vous mettez dans SBT_OPTS ne collera pas (votre -Xmx aura la priorité). De plus, la première ligne du script exécutera toutes les commandes en ~/.sbtconfig s'il existe, c'est peut-être un meilleur endroit pour mettre vos options SBT si vous jouez avec elles assez souvent. Vous n'aurez pas à source ~/.bash_profile chaque fois que vous apportez une modification à SBT_OPTS

7voto

Pooky Points 465

Si vous exécutez sbt depuis PowerShell, définissez l'option SBT_OPTs comme suit :

$env:SBT_OPTS="-Xms512M -Xmx1024M -Xss2M -XX:MaxMetaspaceSize=1024M"

Alors cours :

sbt

7voto

Jarekczek Points 2297

Pour SBT version 1.0.4 sur Windows le défaut Les paramètres de la JVM proviennent de sbt\conf\sbtconfig.txt fichier. Il suffit de modifier les valeurs ici. Modifier -Xmx512M à -Xmx2048M .

Ce n'est pas la seule source d'options JVM pour SBT. D'autres peuvent être trouvées en inspectant sbt.bat . Une façon simple de diagnostiquer d'où viennent les paramètres est de commenter cette ligne dans le fichier batch : @echo off .

2voto

Cassio Points 111

Dans mon cas, la configuration de mon service écrasait la variable d'environnement SBT_OPTS y JAVA_OPTS . J'ai pu fixer les limites en définissant dans ma build.sbt les suivantes :

javaOptions in Universal ++= Seq(
  "-J-Xms1g",
  "-J-Xmx2g")

Référence : https://www.scala-sbt.org/sbt-native-packager/archetypes/java_app/customize.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X