【问题标题】:Could not reserve enough space for object heap with 0.13.1 on Windows?无法在 Windows 上为 0.13.1 的对象堆保留足够的空间?
【发布时间】:2014-01-14 20:49:15
【问题描述】:

我通过 msi 包从 http://www.scala-sbt.org 安装了 sbt 0.13.1。

当我尝试通过命令提示符启动它时,出现此错误

C:\Users\megatron>sbt
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

所以我遵循了setup notes中的建议 并在C:\Program Files (x86)\sbt\conf\sbtconfig.txt 文件中添加/更改了它。

-Xmx1536M
-XX:MaxPermSize=256m
-XX:ReservedCodeCacheSize=128m
-Xss1M 
-XX:+CMSClassUnloadingEnabled 

这也无济于事,我仍然遇到同样的错误。

【问题讨论】:

  • 你在哪里读到sbtconfig.txt,在你链接到的设置说明中我找不到对这个文件的引用?
  • 我不使用 Windows,所以只是一个疯狂的猜测:sbt 是批处理文件吗?如果是这样,它可能看起来类似于this one(这是 sbt 0.11 的旧版本);在那里,您应该能够找到JAVA_OPTIONS 或直接调用java,您可以在其中添加这些选项。 Here 是 Linux 的类似问题,也许它有帮助。
  • 我查看了加载 sbtconfig.txt 以获得额外选项的 sbt.bat。它甚至会检查环境中的 %JAVA_OPTS%,以使用它来代替 sbtconfig.txt。我的机器上没有设置 %JAVA_OPTS%。
  • 然后尝试直接添加您的选项来代替JAVA_OPTS
  • 其中一个linux问题的答案指出了安装路径中出现空格的问题。您在 sbt 位置也有空格;也许尝试将其安装在其他位置。还要检查window setup instructions,特别是尝试创建一个简单的sbt.bat 批处理文件,如该文本中所述。

标签: scala sbt


【解决方案1】:

看来你不应该在 sbt 的安装路径中有空格字符。你有一个Program Files。尝试安装到其他位置。

【讨论】:

  • 这不是我机器上的问题。如果这引起了问题,那么您应该开一张票。
  • 我也很确定空格字符不是根本原因,但很可能是在 32 位机器上或使用 32 位 JVM 时错误的内存设置(路径中的x86) .
【解决方案2】:

[已编辑,见下文]

我的解决方法:首先尝试重新启动 Windows

我过去曾在 Windows 上看到过这个问题。现在再次在 Windows 8.1 上使用 sbt-0.13.5。

默认情况下,sbt 安装程序安装到C:/Program Files (x86)/sbt。我还尝试了C:/sbt 并得到了同样的错误,而我的系统似乎仍然有近 2G RAM 可用。接下来,在不更改任何其他内容的情况下,我重新启动并从 C:/sbt 运行 sbt。然后我使用默认的 C:/Program Files (x86)/sbt 路径重新安装,仍然 sbt 工作。当然重启不是解决办法。


见related answer。问题可能在于,当您运行 sbt 时,您在路径中选择了 32 位 JRE(可能通过 C:/Windows/System32)而不是 64 位(检查 java -version)。显然问题在于,尽管总体上可能有足够的内存,但 JVM 请求的内存可能并不连续。

【讨论】:

    猜你喜欢
    • 2014-02-28
    • 2013-01-17
    • 1970-01-01
    • 1970-01-01
    • 2017-05-04
    • 2013-11-04
    • 2023-03-18
    • 2020-11-26
    相关资源
    最近更新 更多