IBM JRE 1.5 не запустится с запрошенной памятью 1.5G - PullRequest
1 голос
/ 09 марта 2010

IBM JRE 5.0 в Windows, когда ему дают -Xmx1536m на ноутбуке с 2 ГБ памяти, отказывается запускаться: сообщение об ошибке ниже. С -Xmx1000m он запускается.

Кроме того, все нормально начинается с -Xmx1536m на других серверах и даже ноутбуках, поэтому я думаю, что есть нечто большее, чем просто нехватка памяти.

Кроме того, при запуске из Eclipse (хотя в этом случае используется JRE в IBM 5 JDK) с тем же параметром памяти, он работает нормально.

Есть идеи, что здесь происходит?

JVMJ9VM015W Ошибка инициализации для библиотеки j9gc23 (2): не удалось создать экземпляр кучи. 1536M запрошено Не удалось создать виртуальную машину Java


Редактировать:

Кто-нибудь знает о «переключателе 3 ГБ» и о том, актуален ли он здесь (за исключением очевидного факта, что это проблема ограничений памяти). Как я могу узнать, включен ли он и какой самый простой способ включить его?

Ответы [ 3 ]

1 голос
/ 09 марта 2010

По данным IBM DeveloperWorks:

Причина
Система не имеет необходимых ресурсов для удовлетворения максимальное значение кучи по умолчанию, необходимое для запустить JVM.

Чтобы решить, вот что говорит

Решение проблемы
Если вы получаете это сообщение об ошибке при запуске JVM, бесплатно память, останавливая другие приложения это может быть система потребления ресурсы.

У вашей JVM недостаточно ресурсов памяти, чтобы создать максимальный объем кучи, равный 1536 МБ. Просто убедитесь, что у вас достаточно памяти для его размещения.

Кроме того, я считаю, что в Windows максимальный объем кучи составляет 1000 МБ? Я не уверен, что это верно, но в Linux / AIX любой Xmx более 1 ГБ работает нормально.

1 голос
/ 09 марта 2010

Практически максимальный размер, который вы гарантированно получите на платформе Windows, составляет 1450 МБ. Иногда Windows / Java.exe сопоставляет DLLS с адресами в диапазоне 1,5-2,0 ГБ. Это не изменится, даже если вы используете трюк / 3GB (или у вас есть ОС, поддерживающая его). Вы должны вручную перебазировать библиотеки DLL, чтобы увеличить их до уровня 2 ГБ (или 3 ГБ). Это настоящая боль в заднице, и я делал это раньше, но лучшее, что я когда-либо смог получить с / без комбинации / 3GB, это 1.8G на 32-битной Windows

Лучше всего с этим покончить и перейти на 64-битную ОС. Они распространены в наши дни.

1 голос
/ 09 марта 2010

JVM требует, чтобы она могла выделять свою память как один непрерывный блок. Если вы работаете в 32-битной системе, максимальный доступный уровень составляет около 1280 МБ или менее. Чтобы получить больше, вы должны запустить 64-битную JVM в 64-битной ОС.

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

Что касается запуска ОК в других системах, это 32 или 64-битные?

...