在运行分布式应用程序时,我在服务器和工作节点上收到很多以下错误:
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)
这些消息是什么意思,我怎样才能摆脱它们?
正如鸭嘴兽在对我问题的评论中所建议的那样,我将Java降级到1.7.0_41版本。不幸的是,问题仍然存在。
我甚至更进一步地回到了 1.7.0_25 版,显然这解决了错误。我尝试了很多次,但错误消息没有再出现一次。