我的系统是Mint 12 64bit。
我已经安装了类型安全堆栈并创建了一个新的播放应用程序。没有修改代码我试图运行它。这是输出:
Play抱怨此错误消息:
IOException: Cannot run program "javac": java.io.IOException: error=12, Cannot allocate memory
我该如何解决这个问题?
更新:
@Mef
好的,你绝对是对的。我已经将初始RAM从1 GB增加到2 GB(在虚拟机上运行)。编译工作一次。
不幸的是,java已经下定决心即使是2 GB也不够:运行eclipse和firefox我的系统使用1 GB。然后我开始sbt,内存使用量上升到大约1.2 GB。有人可能认为这就足够了。事实并非如此。虽然800 MB仍然可用,但编译失败并出现相同的错误。此外,在尝试编译应用程序后,内存使用量增加到1.6 GB。奇怪的是,即使在编译项目时,它也永远不会达到2 GB,但峰值大约为1.8 GB。
尽管如此,我还是再次尝试并为虚拟机提供了3演出的RAM。现在编译和运行应用程序工作正常。作为另一个可用3 GB的奇迹,内存使用量永远不会超过1.6 GB,并且远低于我在2 GB迭代中看到的1.8 GB的最大值。
答案 0 :(得分:17)
实际上这并非完全是一个系统错误:调整播放配置文件将允许您在内存小于1GB的系统上运行。
在play-2.0.4/framework/build
(或build.bat
)中,您只需更改
java ${DEBUG_PARAM} -Xms512M -Xmx1536M ...
到
java ${DEBUG_PARAM} -Xms128M -Xmx512M ...
现在可能会有其他问题以较少的内存运行,但至少基本设置有效。
答案 1 :(得分:3)
由于这是一般javac
错误,我怀疑它与Play有关。很可能你真的没有内存了。
答案 2 :(得分:1)
这在另一篇文章中有很好的描述,它似乎是OpenJDK的一个问题。
How to solve "java.io.IOException: error=12, Cannot allocate memory" calling Runtime#exec()?
尝试以下方法:
# echo 1 > /proc/sys/vm/overcommit_memory
这对我有用: - )