Как установить размер кучи для sbt?

Я использую SBT 0.12.0. Я прочитал другие ответы на переполнение стека и последовал за ними, однако ни один из них не помогает, например:

  • создайте class ForkRun – я не наблюдал никакого разветвленного процесса во время моего использования sbt
  • установить переменную среды JAVA_OPTS – она ​​установлена, но командная строка процесса sbt, похоже, вообще не использует ее.
  • sbt -J-Xmx2G добавляет параметр в командную строку sbt process, однако старое значение -Xmx1536m используется sbt вместо добавленного параметра.

Я что-то упускаю? Как установить размер кучи для sbt 0.12 при выполнении и тестирования и run ?

Вам нужен SBT_OPTS , вот что я использую в моем .bash_profile:

 export SBT_OPTS="-Xmx1536M -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=2G -Xss2M -Duser.timezone=GMT" 

ОБНОВЛЕНИЕ: Чтобы получить пространство кучи 2G, вы можете использовать это:

 export SBT_OPTS="-Xmx2G -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=2G -Xss2M -Duser.timezone=GMT" 

ПРИМЕЧАНИЕ. SBT ДОЛЖЕН БЫТЬ ПОСЛЕДНИЙ ВЕРСИИ

В старых версиях sbt содержатся ошибки, которые переопределяют эти параметры, используйте brew upgrade sbt для brew upgrade sbt для последних sbt для Mac (при условии установки на sbt ) (IDK для Linux). https://github.com/sbt/sbt/issues/2945#issuecomment-277490848

По состоянию на март 2015 года, если вы используете sbt на OSX с Homebrew, вам следует отредактировать файл /usr/local/etc/sbtopts

например

 # set memory options # #-mem  -mem 2048 

«sbt -mem 23000 run» работает для меня.

Я нашел решение. Независимо от того, как вы указываете размер кучи JVM, он никогда не будет работать, потому что исполняемый файл SBT уже переопределен.

В исполняемом файле SBT есть строка, которая гласит:

. /usr/share/sbt/sbt-launch-lib.bash

Поэтому я редактировал файл:

  # 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[@]}" 

Удалите строку.

Теперь, когда вы запускаете SBT, он больше не будет отменять настройки размера кучи JVM. Вы можете указать настройки размера кучи, используя ответ @ Noan.

Или, альтернативно:

sbt -J-Xmx4G -J-Xms4G

В windowsх для sbt 0.13.9.2 вам нужно установить JAVA_OPTS в JAVA_OPTS параметры jvm.

 > set JAVA_OPTS=-Xmx1G > sbt assembly 

Сценарий sbt.bat загружает значения по умолчанию из conf\sbtconfig.txt в CFG_OPTS но вместо этого будет использовать JAVA_OPTS если он установлен.

Соответствующие выдержки из 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! ) 

, , , (пропускать) . , ,

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

Я искал решение такой проблемы на Mac OS X с помощью домашней установки SBT. Если вы установили SBT через доморощенный, вы находитесь в ясном виде, так как файл /usr/local/bin/sbt выглядит так:

 #!/bin/sh test -f ~/.sbtconfig && . ~/.sbtconfig exec java -Xmx512M ${SBT_OPTS} -jar /usr/local/Cellar/sbt/0.12.3/libexec/sbt-launch.jar "[email protected]" 

Это означает, что любые настройки, которые вы помещаете в SBT_OPTS будут придерживаться (ваш -Xmx будет иметь приоритет). Кроме того, первая строка скрипта будет выполнять любые команды в ~/.sbtconfig если она существует, поэтому может быть лучше разместить ваши параметры SBT, если вы играете с ними совсем немного. Вам не придется SBT_OPTS source ~/.bash_profile каждый раз, когда вы вносите изменения в SBT_OPTS

Если вы запускаете sbt из PowerShell, установите SBT_OPTs среды SBT_OPTs , например:

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

Затем выполните:

 sbt 

Для версии SBT версии 1.0.4 для Windows настройки JVM по умолчанию взяты из sbt\conf\sbtconfig.txt . Просто измените значения здесь. Измените -Xmx512M на -Xmx2048M .

Это не единственный источник возможностей JVM для SBT. Другие могут быть найдены путем проверки sbt.bat . Простой способ диагностики, откуда берутся настройки, заключается в комментировании этой строки в пакетном файле: @echo off .

  • Почему «избегать перегрузки метода»?
  • Поиск параметров типа через reflection в Scala 2.10?
  • Scala: абстрактные типы против дженериков
  • В Scala, что означает «val a: A = _» (подчеркивание), означает?
  • как сохранить возвращаемое значение при входе в scala
  • Разница между MutableList и ListBuffer
  • Пункты памяти и стиль кодирования по Java VM
  • Почему параметр раздела SparkContext.textFile не вступает в силу?
  • Scala double definition (2 метода имеют стирание того же типа)
  • Scala лучший способ превратить коллекцию в Map-by-key?
  • Как я могу прочитать большой файл CSV с classом Scala Stream?
  • Interesting Posts

    Почему нет статических методов в интерфейсах, но статические поля и внутренние classы в порядке?

    Стандартная кнопка Android с другим цветом

    Как хранить батарею?

    printf и длинный двойной

    Как установить последнюю версию opensl Mac OS X El Capitan

    Каковы значения по умолчанию для темы Holo на Android 4.0?

    Java – генерировать случайный диапазон конкретных чисел без дублирования этих чисел – как?

    Как установить беспроводные драйверы без доступа в Интернет?

    прослушиватель событий события на стилизованных значках и ярлыках карты

    Диалоговое окно сообщает мне, что отсутствует драйвер при установке 64-разрядной версии Windows 7

    Как отправить JSON на сервер?

    Удаление элементов в массиве, если элемент является определенным значением VBA

    Каким будет нижняя сторона (ы) для резервного копирования архива через SD-карты?

    Как отключить раздражающее всплывающее окно после автоматического обновления установленных в Windows XP

    Марширование списка объектов, реализующих общий интерфейс, с JaxB

    Давайте будем гением компьютера.