如何使用 Sbt 减少我的 Scala 项目的内存堆?
How can I decrease the memory heap for my scala project using Sbt?
我正在使用 scala 构建一个 javafx 项目,我注意到内存使用量超过 170mb,而一个空白的 javafx 项目大约为 90mb。我看到 页面,它说堆中的大部分内存未被使用,并解释了一种使用此标志缩小堆的方法:--XX:+UseG1GC。我在 sbt 中尝试使用:
javacOptions += "--XX:+UseG1GC"
在 Sbt 中,但内存使用保持不变。谁能帮我缩小这个堆?
javacOptions
是 used to pass Java compiler flags 如果你有 Java 归档在你的项目中编译。
如果您是来自 sbt 的 运行ning 项目,您可以设置 JVM_OPTS
环境变量或创建一个 .jvmopts
文件。它们必须以这种方式配置,因为当 JVM 运行ning 时,它无法设置自己的 JVM 配置。尽管如果你想 运行 在 fork 中编程并让 sbt 使用不同的配置,你可以使用 SBT_OPTS
来独立于 fork 配置 sbt。
顺便说一句。如果您有一些问题,您可以随时使用 sbt-extras
包装器,这会使事情变得更容易。它使用一些更明智的默认值,如果它丢失等下载 sbt
如果您在项目中使用 SBT 本机打包程序,除了 JVM_OPTS
和 .jvmopts
之外,您还可以向生成的执行脚本添加标志(或其他一些自定义命令)。这就是我们在项目中的做法:
project.in(file("example")).settings(
batScriptExtraDefines ++= Seq( //Windows bat/cmd
"""set _JAVA_OPTS=!_JAVA_OPTS! -Djdk.tls.ephemeralDHKeySize=2048""",
"""set _JAVA_OPTS=!_JAVA_OPTS! -Djdk.tls.rejectClientInitiatedRenegotiation=true"""
),
bashScriptExtraDefines ++= Seq( //Unix shell
"""addJava "-Djdk.tls.ephemeralDHKeySize=2048"""",
"""addJava "-Djdk.tls.rejectClientInitiatedRenegotiation=true"""",
"""umask 077"""
)
)
我正在使用 scala 构建一个 javafx 项目,我注意到内存使用量超过 170mb,而一个空白的 javafx 项目大约为 90mb。我看到
javacOptions
是 used to pass Java compiler flags 如果你有 Java 归档在你的项目中编译。
如果您是来自 sbt 的 运行ning 项目,您可以设置 JVM_OPTS
环境变量或创建一个 .jvmopts
文件。它们必须以这种方式配置,因为当 JVM 运行ning 时,它无法设置自己的 JVM 配置。尽管如果你想 运行 在 fork 中编程并让 sbt 使用不同的配置,你可以使用 SBT_OPTS
来独立于 fork 配置 sbt。
顺便说一句。如果您有一些问题,您可以随时使用 sbt-extras
包装器,这会使事情变得更容易。它使用一些更明智的默认值,如果它丢失等下载 sbt
如果您在项目中使用 SBT 本机打包程序,除了 JVM_OPTS
和 .jvmopts
之外,您还可以向生成的执行脚本添加标志(或其他一些自定义命令)。这就是我们在项目中的做法:
project.in(file("example")).settings(
batScriptExtraDefines ++= Seq( //Windows bat/cmd
"""set _JAVA_OPTS=!_JAVA_OPTS! -Djdk.tls.ephemeralDHKeySize=2048""",
"""set _JAVA_OPTS=!_JAVA_OPTS! -Djdk.tls.rejectClientInitiatedRenegotiation=true"""
),
bashScriptExtraDefines ++= Seq( //Unix shell
"""addJava "-Djdk.tls.ephemeralDHKeySize=2048"""",
"""addJava "-Djdk.tls.rejectClientInitiatedRenegotiation=true"""",
"""umask 077"""
)
)