提问者:小点点

sbt(构建Scalatra)在内存不足2GB的情况下立即失败


我设置了一个DigitalOcean“droplet”/服务器并为其提供了512mb的RAM。在尝试运行./sbt脚本时,我立即收到此失败:

使用 /root/.sbt/0.13.0 作为 sbt dir,-sbt-dir 进行覆盖。
OpenJDK 64 位服务器虚拟机警告: 信息: os::commit_memory(0x00000000a0000000, 1073741824, 0)

#内存不足,无法继续运行Java运行时环境
#本机内存分配(malloc)未能分配1073741824字节用于提交保留内存。

1073741824字节~=1.07GB。如果我将其提升到1GB的RAM,它会失败,但当我向服务器提供2GB时它会起作用。

我见过类似的问题,但所有的答案都是“提供更多空间”……但这正常吗?为什么sbt需要立即分配那么多内存?当它实际构建时,它似乎不需要那么多。改变sbt试图分配多少内存可能/明智吗?


共2个答案

匿名用户

您可以通过向 JVM 提供 -Xmx 选项来设置内存分配池的限制。为此,请像 sbt 文档中所说的那样编辑您的 sbt 脚本。另一种方式 - 设置交换或添加更多 RAM。

匿名用户

(Scalatra)项目目录中的sbt文件的设置$default_sbt_mem设置为1536。您可以根据您的服务器进行更改。