Java 失败并显示 "Could not reserve enough space for code cache"

标签 java memory crash

我有以下问题:

$ 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/

相关文章:

Java Tic Tac Toe 游戏

java - “我无法正确捕获 NumberFormatException,因此我的 onClick 无法正常工作

c++ - 无法使用两个 For 循环遍历两个数组

c# - 没有 StackTrace 或日志的 Monotouch 应用程序崩溃(从未调用析构函数)

java - 基于 Java 中的共享 secret 保护数据的创造性/安全方法

java - 改进代码的错误处理

c++ - "new int * **[10]"是做什么的?

java - 为什么我们在启动 jvm 时指定最小和最大堆内存

安卓 : Static variable null on low memory

iphone - 如何阻止 UITableView moveRowAt IndexPath 在重新排序时留下空白行