Невозможно установить размер кучи Java больше 1568 - PullRequest
2 голосов
/ 31 декабря 2011

Я использую сервер со следующими атрибутами:

Windows Server 2008 R2 Standard - 64-разрядная версия 4 ГБ ОЗУ

Я пытаюсь установить размер кучи 3 ГБ для приложения. Я использую флаги -Xmx3G -Xms3G. Запуск с флагами приводит к следующей ошибке:

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

Я играл с настройкой, чтобы увидеть, каков мой потолок, и обнаружил, что 1568 - это мой потолок. Чего мне не хватает?

Ответы [ 3 ]

2 голосов
/ 31 декабря 2011

Сколько физической памяти доступно в вашей системе (из первоначальных 4 ГБ)?Похоже, ваша система не имеет 3 ГБ физической памяти при запуске vm.

Помните, что JVM требуется больше памяти, чем выделено для кучи - есть и другие структуры данных (потокстеки и т. д.), которые также нуждаются в памяти.Таким образом, предоставляемые вами настройки пытаются использовать более 3 ГБ памяти.

Кроме того, вы используете 64-битную jvm?Практический предел размера кучи для 32-разрядного виртуального диска составляет от 1,4 до 1,6 гигабайта в соответствии с этим документом .

1 голос
/ 31 декабря 2011

Java требует непрерывной виртуальной памяти при запуске. В Windows 32-битное приложение запускается в 32-битной эмулируемой среде, поэтому вы не получаете намного больше непрерывной памяти, чем в 32-битной ОС. c.f. в Solaris вы получаете более 3 ГБ виртуальной памяти для 32-битной Java.

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

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

0 голосов
/ 31 декабря 2011

Кажется, у вас нет 3G физической памяти. Вот интересная статья об ошибках настройки размера кучи Java. Ошибки установки размера кучи Java

...