我设置了一个DigitalOcean“droplet”/服务器并为其提供了512mb的RAM。在尝试运行./sbt脚本时,我立即得到了这个失败:
使用/root/.sbt/0.13.0作为sbt dir,-sbt-dir来覆盖。
OpenJDK 64位服务器VM警告:INFO:os :: commit_memory(0x00000000a0000000,1073741824,0)>失败; error ='无法分配内存'(errno = 12)#Java Runtime Environment没有足够的内存来继续 #本机内存分配(malloc)无法为提交保留内存分配1073741824字节。
1073741824字节〜= 1.07GB。如果我将它提升到1GB的RAM,它会失败,但是当我向服务器提供2GB时,它就可以工作。
我见过类似的问题,但所有答案都是“提供更多空间”......但这是正常的吗?为什么sbt需要立即分配的内存?它的实际构建似乎并不需要那么多。是否可以/明智地改变sbt尝试分配的内存量?
答案 0 :(得分:0)
您可以通过向JVM提供-Xmx
选项来设置内存分配池的限制。要实现这一点,请编辑您在sbt docs中所述的sbt脚本。
另一种方法 - 设置交换或添加更多RAM。
答案 1 :(得分:0)
(Scalatra)项目目录中的sbt
文件的设置为$default_sbt_mem
,设置为1536.您可以根据服务器进行更改。