如何设置 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屋!