微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用Sbt减少scala项目的内存堆?

如何解决如何使用Sbt减少scala项目的内存堆?

我正在用scala构建javafx项目,并且我注意到内存使用量超过170mb,空白的javafx项目大约为90mb。我看到了JavaFX eats my memory?页,它说未使用堆中的大多数内存,并解释了一种使用以下标志来缩小堆的方法:--XX:+ UseG1GC。我通过使用以下方法在sbt中进行了尝试 javacoptions + =“ --XX:+ UseG1GC” 在Sbt中,但内存使用率保持不变。有人可以帮我缩小堆吗?

解决方法

javacOptionsused to pass Java compiler flags,如果您已提交要在项目中进行编译的Java文件。

如果您正在通过sbt运行项目,则可以设置JVM_OPTS环境变量或创建.jvmopts文件。必须以这种方式配置它们,因为当JVM运行时,它无法设置自己的JVM配置。尽管如果您想在fork中运行程序并让sbt使用不同的配置,则可以使用SBT_OPTS与fork分开配置sbt。

顺便说一句。如果遇到问题,可以随时使用sbt-extras包装器,这使事情变得更容易。它使用一些更合理的默认值,如果缺少sbt则下载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"""
      )
    )

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。