Ошибки "Невозможно выделить память" (errno = 12) "во время выполнения приложения Java
При запуске распределенного приложения я получаю много таких ошибок как на сервере, так и на рабочих узлах:
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 ГБ ОЗУ, где доступно около 120 ГБ.
Я использую JVM Oracle:
$ 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
Как предложил Platypus в комментариях к моему вопросу, я понизил Java до версии 1.7.0_41. К сожалению, проблема не устранена.
Я пошел еще дальше к версии 1.7.0_25 и, видимо, это решило ошибку. Я пробовал это много раз, и сообщение об ошибке больше не происходило.