'Java应用程序运行时期间无法分配内存'(errno = 12)'错误

时间:2013-12-19 17:02:44

标签: java memory memory-management

在运行分布式应用程序时,我在服务器和工作节点上都会遇到很多这样的错误:

Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00007f4f8c800000, 549453824, 2097152, 0) failed; error='Cannot allocate memory' (errno=12)

大多数情况下,流程会按预期继续完成,但有时流程也会失败。

我用java -Xms512M -Xmx50G -cp myjar.jar myclass.Main

调用我的应用程序

节点有128 GB的RAM,大约120 GB是免费的。

我正在使用Oracle JVM:

$ java -version
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)

这些消息是什么意思,我怎么能摆脱它们?

1 个答案:

答案 0 :(得分:5)

正如Platypus在我的问题评论中所建议的那样,我将Java降级为版本1.7.0_41。不幸的是问题仍然存在。

我甚至更远回到版本1.7.0_25,显然这个解决了错误。我尝试了很多次,错误消息再也没有出现过。