【问题标题】:Set the stack size for SBT设置 SBT 的堆栈大小
【发布时间】:2016-12-07 10:25:54
【问题描述】:

我正在使用我专门构建的 Scala 运行 SBT。我构建的 Scala 编译器会在运行时做很多事情,有很多函数调用,可以是递归的。

所以当我使用我构建的 Scala 编译器运行 SBT 时,堆栈会在很长一段时间后溢出。我尝试在启动 SBT 时设置 -J-Xss。但这不起作用。

我之前遇到过 SBT 堆大小的问题。许多帖子说在启动 SBT 时设置 -J-Xmx 不会改变 JVM 堆大小,因为它被默认的 SBT 内存选项覆盖。 How to set heap size for sbt?

现在,我想知道 -J-Xss 是否可以被默认 SBT 选项覆盖,就像 -J-Xmx 被覆盖一样。或者我应该尝试将 -J-Xss 设置得更大?

【问题讨论】:

    标签: scala sbt


    【解决方案1】:

    有很多方法可以做到这一点,但这取决于您要达到的目标。例如,如果您想要更大的堆来运行测试,请查看此处采用的辅助方法。

    SBT_OPTS

    首先,您可以简单地设置环境变量SBT_OPTS,SBT 在加载自身时会本机查找该变量,这应该会覆盖您要指定的任何设置。

    export SBT_OPTS = "-Xmx1G;-Xms256m;...";
    

    自定义启动器

    实现相同目的的另一种方法是创建自定义 SBT 启动脚本。看看例子here

    用于测试

    如果要修改测试选项,需要使用javaOptions in ThisBuild ++= Seq("-Xmx1g", ...)。要让它们运行,您总是需要拥有fork in Test := true,这将创建一个用于运行测试的分叉 JVM。否则,指定的选项将不会被兑现。

    【讨论】:

    • 谢谢。我发现 -J-Xss10000M 确实有效。我认为您的上述方法也可以应用于 -Xss 选项。
    猜你喜欢
    • 2013-02-23
    • 1970-01-01
    • 2021-06-13
    • 1970-01-01
    • 1970-01-01
    • 2015-06-30
    • 2011-07-01
    • 2014-07-31
    相关资源
    最近更新 更多