SBT在Build.scala中指定java堆大小

时间:2014-12-09 06:07:10

标签: scala sbt heap-size

我的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 个答案:

答案 0 :(得分:8)

如果要更改堆大小,则需要告诉sbt fork another JVM(顺便说一下,这适用于任何JVM选项)。您可以使用fork设置执行此操作:

fork in run := true

此外,您要确保您的选项已正确分隔(sbt没有进行额外的解析):

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

或者,您可以在sbt runner中设置堆大小。如果您使用普通sbt,则可以直接修改启动器脚本。如果您正在使用sbt-extras,则可以使用-J标志将参数传递给JVM:

sbt -J-Xmx2G # etc.