scala – 设置SBT的堆栈大小

我正在使用我专门构建的
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设置得更大?

最佳答案 有很多方法可以做到这一点,但这取决于你想要实现的目标.例如,如果您想要更大的堆来运行测试,请查看此处执行的辅助方法.

SBT_OPTS

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

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

自定义启动器

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

用于检测

如果要修改测试选项,则需要在ThisBuild = Seq(“ – Xmx1g”,…)中使用javaOptions.为了让它们甚至可以运行,你总是需要在Test:= true中使用fork,这将创建一个用于运行测试的分叉JVM.如果没有这个,指定的选项将不受尊重.

点赞