6

我有以下问题:

$ 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,它不起作用。

4

2 回答 2

5

似乎我的 java 在Gentoo Hardened Linux上运行,并且内核启用了PaX 。要禁用 pax 内存控制,我使用了以下命令:

paxctl -c -m /path/to/your/java/bin/java

在那之后,一切都很顺利。

于 2013-04-04T14:46:43.047 回答
-1

您可以设置这些 sysctl 变量(在 BSD 中它位于 /etc/sysctl.conf 中)

security.pax.mprotect.enabled=0
security.pax.mprotect.global=0
security.pax.mprotect.ptrace=0

比.... /etc/rc.d/sysctl restart 做“把戏”

于 2017-04-29T02:29:33.677 回答