如何设置 sbt 的堆大小? [英] How to set heap size for sbt?

查看:40
本文介绍了如何设置 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆