Невозможно запустить Java с -Xmx> 966m

2

Я не могу запустить java, если я установил Xmx в 967 или более высокое значение.

C:\Documents and Settings\salesforce > java -Xmx967m -version Ошибка произошло во время инициализации VM. Не удалось зарезервировать достаточно места для кучи объекта Ошибка: не удалось создать виртуальную машину Java. Ошибка: произошло фатальное исключение. Программа выйдет.

Если я запустил ту же команду, но с Xmx до 966 она работает правильно:

C:\Documents and Settings\salesforce > java -Xmx966m -version java версия "1.7.0_25" Java (TM) SE Runtime Environment (build 1.7.0_25-b17) Клиентская виртуальная машина Java HotSpot (TM) (сборка 23.25-b01, смешанный режим)

Перед выполнением команды доступно 3 ГБ оперативной памяти (диспетчер задач).

Окружающая среда:

  • Java 1.7.0_25 32bits
  • Сервер Windows 2003 SP2, оперативная память 4 ГБ

Спасибо

  • 0
    Java -Xmx966m MaxMemory вы запустить Java -Xmx966m MaxMemory Это сообщит о «Макс. памяти» на основе распределения кучи по умолчанию.
  • 0
    Жалуется: класс MaxMemory не найден. @FredericHenri
Показать ещё 3 комментария
Теги:
heap

1 ответ

0

JVM использует немного больше, чем просто размер кучи для внутренних компонентов. Это может легко объяснить несколько сотен МБ в зависимости от того, как вы настроили вещи (пространство перм, размер стека потоков, количество потоков и т.д.). Вы используете 32-битный jvm, поэтому максимальный размер процесса будет 2 ГБ на Windows 32 бит, я считаю. Я считаю, что есть способы расширить это до 3 ГБ (например, http://dwf.blogs.com/beyond_the_paper/2009/04/enabling-3gb-switch-on-windows-vista.html содержит некоторые объяснения); но прошло какое-то время, так как я был в такой среде. Таким образом, вы, вероятно, приближаетесь к пределу.

  • 0
    Спасибо за ваш ответ, но я считаю, что должно быть что-то еще. Установка максимальной кучи на 967 не достигает предела процесса 2 ГБ наверняка.
  • 0
    Если он говорит вам, что это нехватка памяти, как правило, это не ложь. Ваше предположение, что у вас достаточно памяти, возможно, по какой-то причине неверно. Вы, кажется, сузили его до точной суммы, с которой вы можете создать кучу. куча! = выделенная память. Куча - это бит, доступный вашей программе, но jvm также выделяет память за пределами этой области. Также, если вы загружаете какой-либо нативный материал из Java, который может выделить память кучи. Итак, явно что-то не подходит. Невозможно сказать, что без дополнительной информации.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню