Не удается запустить JBoss 5 с настройкой памяти -Xmx768M - PullRequest
0 голосов
/ 22 декабря 2009

У нас есть компьютер с Windows с 2048 RAM.
Мы пытаемся использовать следующие настройки памяти для JBoss:
-Xms256M -Xmx768M -XX: MaxPermSize = 256M

Но это не может начаться:

Произошла ошибка во время инициализации VM не удалось зарезервировать достаточно места для кучи объектов Не удалось создать Виртуальная машина Java.

JBoss запускается, только если мы изменим -Xmx768M на -Xmx512M.

В чем может быть проблема?

Обновление: Теперь мы используем следующие настройки
-Xms512M -Xmx768M -XX: MaxPermSize = 156M

Ответы [ 5 ]

4 голосов
/ 22 ноября 2012

http://javahowto.blogspot.in/2006/06/6-common-errors-in-setting-java-heap.html

Ошибка, по-видимому, говорит о том, что размер виртуальной памяти машины меньше, чем максимальный размер кучи, который мы определяем через «-Xms1303m -Xmx1303m». Я изменил его на «-Xms256m -Xmx512m», и он начал работать в моем локальном окне Windows.

0 голосов
/ 30 декабря 2009

-Xms256M -Xmx768M -XX:MaxPermSize=256M следует пытаться получить максимум 512M при инициализации плюс около 100M для самого процесса JVM. У вас так много свободной памяти на машине? Мы всегда запускаем jboss на машинах с 4G, потому что БД также занимает совсем немного.

Вот трюк, который вы можете использовать, чтобы найти максимальную сумму, которую вы можете установить. Вы можете просто запустить

java -version -Xms256M -Xmx768M -XX:MaxPermSize=256M

А затем увеличивайте / уменьшайте значения, пока не найдете максимум, который JVM позволит вам установить.

Кстати, в 4G 32-битном окне Windows обычно устанавливаем -Xms768M -Xmx1300M -XX: MaxPermSize = 256M

0 голосов
/ 22 декабря 2009

Есть две возможные причины:

  • JVM не может найти непрерывную область 768 МБ в адресном пространстве или
  • общий размер свободной области в ОЗУ и файле подкачки составляет менее 1 ГБ.

(JVM проверяет их, используя -Xmx и -XX:MaxPermSize при запуске из-за реализации GC)

Как вы могли бы -Xmx768m -XX:MaxPermSize156m, последнее сомнительно.

Если это так, проблему можно решить, освободив ОЗУ (например, остановив неиспользуемые службы) или расширив файл подкачки.

0 голосов
/ 30 декабря 2009

возможно, вы можете перезагрузить компьютер и повторить попытку. Вы не можете выделить память больше, чем ваша общая физическая память.

0 голосов
/ 22 декабря 2009

Интересно. Что происходит, когда вы устанавливаете максимальную память на 513M?

Если это не поможет, возможно, это проблема, которую я давно не видел. Древний компилятор COBOL, который я использовал, отказывался работать на ПК с 640 КБ ОЗУ, потому что они использовали проверку номера со знаком, чтобы определить, достаточно ли памяти.

И в этом мире на 640K фактически был установлен старший бит, следовательно, он был отрицательным числом, поэтому проверка всегда заканчивалась неудачей.

Мне трудно поверить, что это произойдет в современном мире, но, возможно, стоит взглянуть.

Если это не терпит неудачу на 513M, то может просто случиться так, что вы пытаетесь выделить слишком много памяти. Это не обязательно физическая память, которая имеет значение, адресное пространство может быть проблемой, но вы должны иметь 2G (как минимум) этого также в 32-битной Windows.

С вашими показанными настройками вы используете 1G только для permgen и heap. Попробуйте настроить их, пока они не сработают, и опубликуйте имеющиеся у вас цифры.

...