Установите размер стека для SBT
Я бегу SBT, используя мой специально построенный Scala. Мой встроенный компилятор Scala будет много чего делать во время выполнения, с большим количеством вызовов функций, которые могут быть рекурсивными.
Поэтому, когда я запускаю SBT, используя свой встроенный компилятор Scala, стек переполняется через долгое время. Я пытаюсь установить -J-Xss при запуске SBT. Но это не работает.
Я столкнулся с проблемой с размером кучи SBT раньше. И во многих публикациях говорится, что установка -J-Xmx при запуске SBT не изменит размер кучи JVM, поскольку он переопределяется стандартными параметрами памяти SBT. Как установить размер кучи для SBT?
Теперь мне интересно, можно ли переопределить -J-Xss по умолчанию параметрами SBT, так же как переопределяется -J-Xmx. Или я должен просто попытаться установить -J-Xss больше?
1 ответ
Есть несколько способов сделать это, но это зависит от того, чего вы пытаетесь достичь. Например, если вам нужна большая куча для выполнения тестов, посмотрите на вторичный подход, примененный здесь.
SBT_OPTS
Сначала вы можете просто установить переменную окружения SBT_OPTS
какой SBT будет искать при загрузке, и это должно переопределить любые настройки, которые вы хотите указать.
export SBT_OPTS = "-Xmx1G;-Xms256m;...";
Пользовательский лаунчер
Другой способ добиться того же - создать собственный скрипт запуска SBT. Посмотрите на пример здесь.
Для тестирования
Если вы хотите изменить параметры тестирования, вам нужно использовать javaOptions in ThisBuild ++= Seq("-Xmx1g", ...)
, Чтобы их даже запустить, вам всегда нужно иметь fork in Test := true
, который создаст разветвленную JVM для запуска тестов. Без этого указанные параметры не будут выполнены.