Java 7: должны ли пользователи знать об изменениях в обработке динамической памяти?

После установки последней версии Java 7 Development Kit (Java SE 7u11) на мой 32-разрядный ПК под управлением Windows 7 Professional с 4 ГБ ОЗУ я заметил, что не могу выделить много памяти для Tomcat.

Принимая во внимание, что эти настройки памяти работали для Java Development Kit 6u38:

set JAVA_OPTS=-server -Xms978m -Xmx978m -XX:MaxPermSize=512m

... при запуске с jdk7 эти настройки приводят к закрытию программы запуска Tomcat со следующим сообщением об ошибке:

Произошла ошибка при инициализации ВМ

Не удалось зарезервировать достаточно места для кучи объектов

Ошибка: не удалось создать виртуальную машину Java.

Ошибка: произошло фатальное исключение. Программа будет закрыта.

Я попытался понизить настройки Xms и Xmx, и, очевидно, он не будет работать с более чем 512 м:

set JAVA_OPTS=-server -Xms512m -Xmx512m -XX:MaxPermSize=512m

Еще, systeminfo |find "Available Physical Memory" говорит мне, что у меня 1200мб доступной памяти.

Изменилось ли что-нибудь в отношении управления памятью в Java 7, и означает ли это, что Java 7 может работать только с меньшим объемом памяти?

Спасибо за любой совет,

Рон

1 ответ

Две информации, которые могут вам помочь, правильно рассчитать память:

  1. 32-разрядная ОС не может использовать более 3 ГБ ОЗУ, даже если установлено больше
  2. Хотя память выделена для Java, она "свободна" в системной информации, пока java не использует ее активно

Если у вас также запущен какой-либо другой Java-процесс (например, eclipse?), Вы также не увидите выделенную память этих процессов.

Другие вопросы по тегам