【问题标题】:Why does "sbt run" fail with OutOfMemoryError while "activator run" works fine?为什么“激活器运行”工作正常时“sbt 运行”失败并出现 OutOfMemoryError?
【发布时间】:2015-01-25 18:38:25
【问题描述】:

我可以使用 activator run 成功启动我的应用程序,但简单的 sbt run 会以 OutOfMemoryError 或应用程序突然终止而结束。

Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "play-akka.actor.default-dispatcher-2"

如果我的理解是正确的,Activator 应该将除自定义命令之外的所有命令委托给 SBT。显然,Activator 似乎做了更多的事情。

我怎样才能找到不同之处?在使用 SBT 运行我的应用程序之前,我应该设置任何强制性 JVM 设置吗?

我的环境是 Java 7、Windows 7 和 SBT 0.13.7

【问题讨论】:

    标签: playframework-2.0 sbt typesafe-activator


    【解决方案1】:

    基本上没有区别。 Activator 本质上只是调用 sbt。它做了更多的事情,它包括一些 sbt 插件,这些插件提供 ui 和从模板创建新项目的能力。它还使用一些比大多数普通 sbt 调用程序脚本更合理的默认 JVM 设置来调用 sbt,包括更多内存。

    如何设置更好的默认值取决于您使用的 sbt 调用程序脚本,这可能取决于您安装 sbt 的方式。但是大多数脚本都支持SBT_OPTS 环境变量,例如将-Xmx1024m 放入其中以给sbt 一个堆空间。如果您遇到 perm gen space out of memory 错误,您可能还需要添加 -XX:MaxPermSize=768m

    【讨论】:

    • 感谢您的澄清。我浏览了 activator.bat 脚本的相关部分。在 SBT_OPTS 中设置 -XX:MaxPermSize 解决了我的问题。
    猜你喜欢
    • 2018-09-24
    • 2017-04-11
    • 2019-07-12
    • 2015-08-19
    • 2017-01-08
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 2016-03-22
    相关资源
    最近更新 更多