gpt4 book ai didi

java - Scala SBT运行时的第二个-Xmx参数

转载 作者:太空宇宙 更新时间:2023-11-04 13:41:11 24 4
gpt4 key购买 nike

我正在尝试使用 sbt“run”命令运行一个占用大量内存的程序,并且我似乎遇到了这样的问题:jvm 似乎从某个覆盖我的参数的地方获取了第二个 -Xmx 参数。

我正在通过“sbt run”运行该程序。

查看进程我可以发现以下内容:

/usr/bin/java -XX:MaxPermSize=256M -Xmx32G -Xms1024m -Xmx1024m -XX:ReservedCodeCacheSize=128m -jar /usr/local/Cellar/sbt/0.13.6/libexec/sbt-launch.jar run

我的sbt文件如下:

lazy val commonSettings = Seq(
organization := "edu.university",
version := "0.1.0",
scalaVersion := "2.10.2",
name := "Example",
javaOptions += "-Xmx32G"
)

如果您想测试它,这是我创建的一段代码,它只是填充内存。

package edu.university

import java.lang.Thread
import scala.collection.mutable.ArrayBuffer

object Main {
val arraySize = 10000
val nmws = 160000000 // no OOM
// val nmws = 180000000 // OOM
val r = scala.util.Random
def main(args: Array[String]): Unit = {
println("hi")
val ab = new ArrayBuffer[Memwaster](nmws)
ab.transform { a => new Memwaster(r.nextInt) }
println("done")
Thread.sleep(20000)
}
}
class Memwaster(foo: Int)

使用较大的 nmws 值运行将使用略多于 1G 的内存,然后抛出内存不足错误。

最佳答案

事实证明,一种解决方案是在 sbtopts 中设置 -mem 选项。我在/usr/local/etc/sbtopts (在 OSx Yosemite 下)找到了我的 sbtopts。对于 32G,我将其设置为“-mem 32000”。如果这是一个不好的解决方案,请发布另一个答案,我很高兴在这里听到意见。

Sorta 通过以下文档解决了这个问题: https://opensource.ncsa.illinois.edu/confluence/display/DFDL/Configure+SBT

这看起来像是我的 build.sbt 中的 javaOptions 值没有覆盖它的错误吗?或者这是出于某种原因所期望的行为?

关于java - Scala SBT运行时的第二个-Xmx参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31252159/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com