如何为 sbt 设置堆大小? [英] How to set heap size for sbt?
问题描述
我正在使用 SBT 0.12.0.我已经阅读了有关堆栈溢出的其他答案并关注了它们,但是它们都没有帮助,例如:
I am using SBT 0.12.0. I have read other answers on stack overflow and followed them, however none of them helps, for example:
- 创建
ForkRun
类 - 我在使用 sbt 期间没有观察到任何分叉进程 - 设置环境变量
JAVA_OPTS
- 已设置但sbt的进程命令行似乎根本没有使用它. sbt -J-Xmx2G
将参数附加到 sbt 进程命令行,但是 sbt 使用旧值-Xmx1536m
而不是附加参数.
- create
ForkRun
class - I have not observed any forked process during my usage of sbt - set environment variable
JAVA_OPTS
- it is set but sbt's process command line does not seem to use it at all. sbt -J-Xmx2G
appends the parameter to sbt process command line, however the old value-Xmx1536m
is used by sbt instead of the appended parameter.
我错过了什么吗?在进行测试和 run
时,如何设置 sbt 0.12 的堆大小?
Am I missing something? How do I set heap size for sbt 0.12, when doing both testing and run
?
推荐答案
我找到了解决方案.无论您如何指定 JVM 堆大小,它都不会起作用,因为 SBT 可执行文件已经覆盖了它.
I have found the solution. No matter how you specify JVM heap size, it will never work because SBT executable already has it overridden.
SBT 可执行文件中有一行写着:
There is a line in SBT executable which says:
<代码>./usr/share/sbt/sbt-launch-lib.bash
所以我编辑了文件:
# run sbt
execRunner "$java_cmd"
${SBT_OPTS:-$default_sbt_opts}
- $(get_mem_opts $sbt_mem)
${java_opts}
${java_args[@]}
-jar "$sbt_jar"
"${sbt_commands[@]}"
"${residual_args[@]}"
删除 -
行.
现在,当您运行 SBT 时,它将不再覆盖您的 JVM 堆大小设置.您可以使用@Noan 的答案指定堆大小设置.
Now when you run SBT, it will no longer override your JVM heap size settings. You can specify heap size settings using @Noan's answer.
或者:
sbt -J-Xmx4G -J-Xms4G
这篇关于如何为 sbt 设置堆大小?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!