我可以通过 activator run 成功启动我的应用程序,但简单的 sbt run 会以 OutOfMemoryError 或应用程序突然终止而结束。
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "play-akka.actor.default-dispatcher-2"
如果我的理解是正确的,Activator 应该将除自定义命令之外的所有命令委托(delegate)给 SBT。显然,Activator 似乎做了更多的事情。
如何找出差异?在使用 SBT 运行应用程序之前,是否应该设置任何强制 JVM 设置?
我的环境是 Java 7、Windows 7 和 SBT 0.13.7
最佳答案
从根本上来说,没有什么区别。 Activator 本质上只是调用 sbt。不过它的功能还多一点,它包括一些 sbt 插件,这些插件提供了 ui 和从模板创建新项目的能力。它还使用一些比大多数普通 sbt 调用程序脚本更合理的默认 JVM 设置来调用 sbt,包括更多的内存。
如何设置更好的默认值取决于您使用的 sbt 调用程序脚本,并且这可能取决于您安装 sbt 的方式。但大多数脚本都支持 SBT_OPTS
环境变量,例如将 -Xmx1024m
放入该变量中,以便为 sbt 提供千兆的堆空间。如果您遇到永久代空间内存不足错误,您可能还需要添加 -XX:MaxPermSize=768m
。
关于playframework-2.0 - 为什么 "sbt run"失败并出现 OutOfMemoryError 而 "activator run"工作正常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27166019/