Java 1.6 32-битная минимальная и максимальная проблема с памятью кучи

У меня установлена ​​32-разрядная версия JRE v1.6. Когда я пытаюсь запустить программу следующим образом:

java -Xms1024m -Xmx2048m net.analysis.MyProg

Я вижу следующее отображаемое сообщение:

Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine

Насколько я знаю, максимальный размер кучи, разрешенный для 32-битной JVM, составляет 2 ГБ. На компьютере, на котором запущен мой код, имеется 131061 МБ физической памяти (используя диспетчер задач Windows, 128 ГБ ОЗУ).

Кто-нибудь знает, что я делаю неправильно здесь?


person Jane Wayne    schedule 19.08.2013    source источник
comment
AFAIK. Пространство кучи должно быть непрерывным. Даже в них у вас может быть достаточно свободной памяти, она может быть фрагментирована...   -  person MadProgrammer    schedule 19.08.2013
comment
Какую версию винды вы используете. Во многих 32-битных окнах ограничение составляет 3 ГБ.   -  person Scary Wombat    schedule 19.08.2013
comment
WTF 128гб ОЗУ - завидую   -  person Scary Wombat    schedule 19.08.2013
comment
сервер, на котором выполняется код, — это 64-разрядная версия Windows Server 2008 R2 Enterprise. Другие интересующие характеристики: ЦП Intel Xeon X7560 с тактовой частотой 2,27 ГГц (4 процессора, но диспетчер задач показывает 16x4=32 ядра).   -  person Jane Wayne    schedule 19.08.2013
comment
Если вы используете 32-разрядное приложение Windows, вы ограничены тем, что будет делать эмуляция Windows XP. Неважно, сколько у вас памяти, 32-битная Windows ограничивает вас 1,2–1,4 ГБ кучи. Вы действительно должны использовать 64-битную JVM.   -  person Peter Lawrey    schedule 19.08.2013


Ответы (1)


В вашем случае ограничение, скорее всего, связано с 32-битной архитектурой и тем, как Windows распределяет виртуальное адресное пространство.

Согласно Часто задаваемым вопросам по Oracle JVM, вы можете ожидать только От 1,4 Гб до 1,6 Гб на 32-битной JVM в Windows.

person Stephen C    schedule 19.08.2013
comment
Я думаю, вы правы. Я попробовал следующее: java -Xms1g -Xmx1536m net.analysis.MyProg, и это работает. так что около 1,5 Гб это предел. большое спасибо. - person Jane Wayne; 19.08.2013