SBT Укажите размер кучи Java в Build.scala

Содержимое файла My Build.scala.

val commonSettings = Seq(
version := "1.0.0",
organization := "com.collective",
scalaVersion := "2.11.4",
scalacOptions ++= List(
  "-encoding", "UTF-8",
  "-target:jvm-1.7",
  "-feature",
  "-unchecked",
  "-deprecation",
  "-Xlint",
  "-Xfatal-warnings"
),
resolvers ++= Seq(
  "ConJars" at "http://conjars.org/repo"
),
javaOptions in run += "-Xms256M -Xmx2G -XX:MaxPermSize=1024M -XX:+UseConcMarkSweepGC"
)

lazy val segmentFetcher = Project("segments-fetcher", file("."))
.settings(commonSettings: _*)
)

Тем не менее, когда я выполняю

sbt run

и посмотрите в jconsole, размер кучи, который я установил в Build.scala, не подобран. Это просто показывает -Xmx512M. Может кто-нибудь, пожалуйста, дайте мне знать, как мы заставляем sbt выбирать пространство кучи из файла сборки проекта?

Спасибо!

1 ответ

Решение

Если вы хотите изменить размер кучи, вы должны указать sbt на форк другой JVM (кстати, это относится к любой опции JVM). Вы можете использовать fork установка для этого:

fork in run := true

Кроме того, вы хотите убедиться, что ваши параметры правильно разделены (нет никакого дополнительного анализа, выполняемого sbt):

javaOptions in run ++= Seq(
    "-Xms256M", "-Xmx2G", "-XX:MaxPermSize=1024M", "-XX:+UseConcMarkSweepGC")

Кроме того, вы можете установить размер кучи в sbt runner. Если вы используете обычный sbt, вы можете напрямую изменить скрипт запуска. Если вы используете sbt-extras, вы можете передать аргументы в JVM, используя -J флаг:

sbt -J-Xmx2G # etc.
Другие вопросы по тегам