有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (6) 个答案

  1. # 1 楼答案

    如果在linux shell上运行sbt,则可以使用:

    env JAVA_OPTS="-Xmx512m" sbt run
    

    这是我通常用来运行sbt项目的命令

  2. # 2 楼答案

    我知道有一种方法。设置环境变量JAVA_OPTS

    JAVA_OPTS='-Xmx512m'
    

    我还没有找到一种作为命令参数执行此操作的方法

  3. # 3 楼答案

    对于分叉流程,您应该查看构建。scala

    要修改分叉进程的java选项,需要在构建中指定它们。scala(或您为构建命名的任何东西)如下所示:

    val buildSettings = Defaults.defaultSettings ++ Seq(
       //…
       javaOptions += "-Xmx1G",
       //…
    )
    

    这将为您提供正确的选项,而无需全局修改JAVA_选项,它将把自定义JAVA_选项放在sbt generated start-script

    对于非分叉的进程,最方便的方法是通过sbtoptssbtconfig设置配置,具体取决于您的sbt版本

    自sbt 0.13.6^{} is deprecated。沿以下行修改/usr/local/etc/sbtopts

    -J-Xms512M
    -J-Xmx3536M
    -J-Xss1M
    -J-XX:+CMSClassUnloadingEnabled
    -J-XX:+UseConcMarkSweepGC
    -J-XX:MaxPermSize=724M
    -J-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
    

    您还可以使用与/usr/local/etc/sbtopts文件相同的语法在SBT项目的根目录中创建.sbtopts文件。这使得项目是独立的

    在sbt 0.13.6之前您可以在中设置选项。非分叉过程的SBT配置:

    1. 检查sbt的位置:

      $ which sbt
      /usr/local/bin/sbt
      
    2. 请看内容:

      $ cat /usr/local/bin/sbt
      #!/bin/sh
      test -f ~/.sbtconfig && . ~/.sbtconfig
      exec java ${SBT_OPTS} -jar /usr/local/Cellar/sbt/0.12.1/libexec/sbt-launch.jar "$@"
      
    3. 设置正确的jvm选项以防止OOM(常规和永久):

      $ cat ~/.sbtconfig
      SBT_OPTS="-Xms512M -Xmx3536M -Xss1M 
       -XX:+CMSClassUnloadingEnabled 
       -XX:+UseConcMarkSweepGC -XX:MaxPermSize=724M"
      

    如果您只想为当前运行的SBT设置SBT_选项,您可以按照Googol Shan的建议使用env SBT_OPTS=".." sbt。或者您可以使用Sbt 12中添加的选项:sbt -mem 2048。对于较长的选项列表来说,这会变得很麻烦,但如果您有不同需求的不同项目,这可能会有所帮助

    请注意,CMSClassUnloadingEnabled与UseConcMarkSweepGC配合使用有助于保持PermGen空间干净,但根据您使用的框架,PermGen上可能存在实际泄漏,这最终会强制重新启动

  4. # 4 楼答案

    试试这个:

    class ForkRun(info: ProjectInfo) extends DefaultProject(info) {
        override def fork = Some(new ForkScalaRun {
            override def runJVMOptions = super.runJVMOptions ++ Seq("-Xmx512m")
            override def scalaJars = Seq(buildLibraryJar.asFile, buildCompilerJar.asFile)
        })
    }
    
  5. # 5 楼答案

    .sbtconfig不推荐从SBT0.13.6开始使用。相反,我在/usr/local/etc/sbtopts中以以下方式配置了这些选项:

    -J-Xms512M
    -J-Xmx3536M
    -J-Xss1M
    -J-XX:+CMSClassUnloadingEnabled
    -J-XX:+UseConcMarkSweepGC
    -J-XX:MaxPermSize=724M
    -J-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
    
  6. # 6 楼答案

    在sbt第12版及以后的版本中,有一个选项:

    $sbt -mem 2048