我有以下问题:
$ java -jar program.jar
Error occurred during initialization of VM
Could not reserve enough space for code cache
系统看到的内存量似乎足够:
$ free -m
total used free shared buffers cached
Mem: 5959 640 5318 0 0 390
-/+ buffers/cache: 249 5710
Swap: 4099 0 4099
我尝试将堆设置降低到 16mb,但没有帮助:
$ java -Xmx16m -Xms16m -jar program.jar
Error occurred during initialization of VM
Could not reserve enough space for code cache
有什么问题吗?我该如何调试?
编辑: 忘记包含版本 - 我使用 Sun Java 7u15,64 位。我实际上无法让它显示版本字符串,因为“java -version”失败并出现相同的错误。
此外,出于某种原因,如果我使用 OpenJDK 6u27,它会启动 - 但由于该应用需要 java 7,所以它无法运行。
最佳答案
似乎我的 java 在 Gentoo Hardened Linux 上运行,内核有 PaX启用。要禁用 pax 内存控制,我使用了以下命令:
paxctl -c -m /path/to/your/java/bin/java
之后一切顺利。
关于Java 失败并显示 "Could not reserve enough space for code cache",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15812939/