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

查看:35
本文介绍了如何为 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天全站免登陆