';无法分配内存';(errno=12)和#x27;Java应用程序运行时出错

';无法分配内存';(errno=12)和#x27;Java应用程序运行时出错,java,memory,memory-management,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

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

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)

这些消息意味着什么?我如何才能消除它们?

正如Platypus在对我的问题的评论中所建议的那样,我将Java降级到了1.7.041版。不幸的是,问题依然存在


我进一步回到了1.7.0_25版本,显然这解决了错误。我尝试了很多次,但一次也没有出现错误消息。

在运行应用程序时,有时您可能没有512 mb的可用ram。尝试删除-Xms并只保留-XmxHi。我刚试过,但不幸的是没有用。你最近有没有把java从1.7.0_41升级到1.7.0_45?没有,但节点是最近设置的。我还没有在我的应用程序中使用1.7.041。你认为这会有帮助吗?我读过一些关于人们在将java从.41更新到45时面临这个问题的文章。我不能肯定地告诉你,但如果你能试一试,也许值得一试。很高兴我能帮上忙。你有关于为什么版本更改修复了这个问题的详细信息吗?不幸的是,我没有。如果这个问题在未来的Java版本中仍然存在,我将向Oracle报告一个bug。