Java не может зарезервировать достаточно места для кучи объектов - несколько процессов Java - PullRequest
0 голосов
/ 25 июня 2018

Один из наших клиентов сталкивается с этим сообщением об ошибке при попытке запустить второй процесс Java.

Error occurred during initialization of VM
Could not reserve enough space for object heap

Странно, потому что из 8 гигабайт памяти доступно только 2 или 3.

Команда для запуска второго процесса работает нормально, если первый процесс не запущен.Вот команда, используемая для запуска второго процесса:

java -jar Xmx512m -jar xxxJar.jar

Первый процесс запускается как служба Windows.Я не знаю хорошего способа отображения команды запуска для службы, скорее всего, она запускает наш командный файл запуска.Проходя через пакетный файл, похоже, что используются следующие параметры Java:

-Xms1g -Xmx1g -Xss256K -Xverify:none -XX:+TieredCompilation -XX:+UseBiasedLocking
-XX:+UseParNewGC -XX:InitialCodeCacheSize=8m -XX:ReservedCodeCacheSize=32m 
-Dorg.terracotta.quartz.skipUpdateCheck=true

Также при запуске службы отображается это предупреждение:

Java HotSpot(TM) 64-Bit Server VM warning: Using the ParNew young collector with the Serial old collector is deprecated and will likely be removed in a future release 

Что также странно, потому что яне вижу предупреждения других систем.

Платформа - JDK 1.8.0_111, Windows Embedded 2010.

Вопросы: 1. Почему Java не может запуститься, когда доступно 5,5 гигабайта доступной памяти, и спрашивает толькоза .5 гигов макс?

Почему предупреждение UseParNewGC выдается на этом компьютере, но не на других?

1 Ответ

0 голосов
/ 26 июня 2018

Вместо

java -jar Xmx512m -jar xxxJar.jar

try

java -Xmx512m -jar xxxJar.jar

По умолчанию резервируется 1/4 основной памяти, и я подозреваю, что это не удается сделать, прежде чем он получит шанссообщить, что вы использовали -jar дважды.

Есть идеи, почему он не может получить место только во время работы другой службы, но все еще доступно 5,5 гигабайта ядра?

При использовании 32-разрядной JVM для Windows максимальный размер кучи ограничен от 1,2 до 1,5 ГБ в зависимости от ОС.Возможно, значение по умолчанию уже слишком велико.

...