Мое приложение выполняет обработку больших массивов данных и требует больше памяти, чем предоставляет JVM по умолчанию. Я знаю, что в Java это указано параметром «-Xmx». Как настроить SBT на использование определенного значения «-Xmx» для запуска приложения с действием «запустить»?
98
javaOptions += "-Xmx1G"
javaOptions
действует только на разветвленные JVM (см. Scala-sbt.org/0.13/docs/Forking.html )fork in run := ture
включаетjavaOptions
Для разветвленных процессов вы должны посмотреть Build.scala
Чтобы изменить параметры java для разветвленных процессов, вам необходимо указать их в Build.scala (или как там вы назвали свою сборку) следующим образом:
Это даст вам правильные параметры без глобального изменения JAVA_OPTS, и он поместит пользовательский JAVA_OPTS в сгенерированный sbt start-script
Для не разветвленных процессов удобнее всего настроить конфигурацию через
sbtopts
или вsbtconfig
зависимости от вашей версии sbt.Поскольку sbt 0.13.6
.sbtconfig
устарел . Измените/usr/local/etc/sbtopts
следующие строки:Вы также можете создать
.sbtopts
файл в корне вашего проекта SBT, используя тот же синтаксис, что и в/usr/local/etc/sbtopts
файле. Это делает проект самодостаточным.До sbt 0.13.6 вы могли устанавливать параметры в .sbtconfig для не разветвленных процессов:
Проверьте, где находится sbt:
Посмотрите на содержание:
Установите правильные параметры jvm для предотвращения OOM (как обычного, так и PermGen):
Если вы хотите установить SBT_OPTS только для текущего запуска sbt, вы можете использовать его,
env SBT_OPTS=".." sbt
как это предлагает Googol Shan. Или вы можете использовать опцию, добавленную в Sbt 12 :sbt -mem 2048
. Это становится громоздким для более длинных списков вариантов, но может помочь, если у вас есть разные проекты с разными потребностями.Обратите внимание, что CMSClassUnloadingEnabled совместно с UseConcMarkSweepGC помогает поддерживать чистоту пространства PermGen, но в зависимости от того, какие фреймворки вы используете, у вас может быть фактическая утечка PermGen, что в конечном итоге приведет к перезагрузке.
источник
.sbtopts
файл в корне вашего проекта SBT, используя тот же синтаксис, что и в/usr/local/etc/sbtopts
файле. Это делает ваш проект автономным, что может быть очень удобно в ситуациях CI.В sbt версии 12 и новее для этого есть опция:
источник
Not a valid command: mem (similar: set)
Если вы запускаете sbt в оболочке Linux, вы можете использовать:
Это моя обычно используемая команда для запуска моего проекта sbt.
источник
override def fork
решение выше. (sbt 0.7.7).sbtconfig
устарела, начиная с SBT0.13.6
. Вместо этого я настроил эти параметры/usr/local/etc/sbtopts
следующим образом:источник
-J-Xss1M
немного мала для больших классов корпусов, 4M кажется более безопасным.Я знаю один способ. Установите переменную среды JAVA_OPTS.
Я не нашел способа сделать это в качестве параметра команды.
источник
Используйте JAVA_OPTS для установки с переменной окружения.
Используйте параметры -JX для sbt для отдельных параметров, например -J-Xmx2048 -J-XX: MaxPermSize = 512
В более новых версиях sbt есть опция «-mem».
источник
В
javaOptions += "-XX:MaxPermSize=1024"
нашем build.sbt, на который ссылается @iwein выше, мы работали, когда мы видели ошибку java.lang.OutOfMemoryError, выдаваемую во время выполнения тестов Specs2 через sbt.источник
Переменная среды _JAVA_OPTIONS, которую необходимо установить. После того, как вы установите _JAVA_OPTIONS, и когда вы sbt, sbt покажет сообщение, используя JAVA_OPTIONS и значения.
В качестве альтернативы вы можете установить javaOption в файле sbt или .scala, например
Из оболочки sbt вы можете запустить show javaOptions, чтобы увидеть установленные значения.
источник
Это устанавливает параметры JVM для тестов. Также работает с jvm forking (
fork in Test := true
).источник
build.sbt
?javaOptions in ThisBuild += "-Xmx1G"
илиjavaOptions in (ThisBuild, Test) += "-Xmx1G"
sbt позволяет вам перечислить параметры JVM, необходимые для запуска вашего проекта в файле с именем
.jvmopts
в корне вашего проекта. затем добавьте нужные параметры Java
он протестирован и работает в windows 10 https://www.lagomframework.com/documentation/1.4.x/scala/JVMMemoryOnDev.html
источник