【发布时间】:2015-10-07 14:25:32
【问题描述】:
所以我试图在 512mb Digital Ocean 服务器上编译和运行一个 scala 项目。基本上,我遇到的问题是,当它开始编译时,它会引入所有依赖项,并最终耗尽内存。这是正常的吗?我知道我想运行的项目不需要超过 512mb,如果为了编译就不得不增加大小是很可惜的。我在这里做错了吗?
这是我的 build.sbt,注意这是使用 sbt.version 13.8
scalaVersion := "2.10.2"
libraryDependencies ++= {
val akkaV = "2.1.4"
val sprayV = "1.1.1"
Seq(
"com.typesafe.akka" %% "akka-actor" % akkaV,
"com.typesafe.akka" %% "akka-testkit" % akkaV % "test",
"org.specs2" %% "specs2-core" % "2.3.9" % "test",
"org.twitter4j" % "twitter4j-stream" % "4.0.2",
"io.spray" % "spray-can" % sprayV,
"io.spray" % "spray-routing" % sprayV,
"io.spray" % "spray-client" % sprayV,
"io.spray" % "spray-testkit" % sprayV,
"io.spray" % "spray-json_2.10" % "1.2.5",
"com.github.nscala-time" %% "nscala-time" % "1.4.0",
"com.codahale.metrics" % "metrics-core" % "3.0.1",
"org.elasticsearch" % "metrics-elasticsearch-reporter" % "2.0"
)
}
enablePlugins(JavaAppPackaging)
//settings(com.typesafe.sbt.SbtNativePackager.packageArchetype.java_application: _*)
Revolver.settings
【问题讨论】:
-
512MB 对于编译一个大型项目来说是相当乐观的。你可以尝试设置SBT_OPTS为sbt指定最大堆和GC。
-
所以,基本上如果我想为我的项目使用这个 512mb 服务器,我可能应该只组装一个 .jar,然后将其发送到服务器以运行?好吧,我猜是这样的,这样服务器就不必管理编译了。
-
我不知道。也许您可以找到使 GC 足够早启动的 JVM 设置,不会超过 512MB。但这纯粹是推测性的。对于组装任务,我猜它会在某个时候将所有罐子拉到内存中。
-
“我可能应该只是组装一个 .jar,然后将其发送到服务器以运行”——是的,这对我来说听起来很明智。