Не удалось зарезервировать достаточно места для кучи объектов для запуска JVM
Просто столкнулся с странной проблемой. Когда я печатаю
java -version
я получил
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.
.
java -Xms64m -Xmx64m -version
Эта команда отлично работает
java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot(TM) Client VM (build 19.1-b02, mixed mode)
Если я меняю xms, xmx на 128m, я снова получаю ошибку.
Используя команду top
и free -m
, я вижу, что я получил более 192 МБ бесплатно, поэтому почему я все еще получаю эту ошибку?
Mem: 262144k total, 64760k used, 197384k free, 0k buffers
Swap: 0k total, 0k used, 0k free, 0k cached
Спасибо
Ответы
Ответ 1
Похоже, что машина, на которой вы пытаетесь запустить это, имеет только 256 МБ памяти.
Возможно, JVM пытается выделить большой непрерывный блок из 64 Мб памяти. 192 МБ, которые у вас есть бесплатно, могут быть фрагментированы на более мелкие части, так что нет свободного смежного блока размером 64 МБ.
Попробуйте запустить Java-программу с меньшим размером кучи, например:
java -Xms16m ...
Ответ 2
У меня была такая же проблема при использовании 32-разрядной версии java в 64-битной среде. При использовании 64 java в 64 ОС это было нормально.
Ответ 3
В соответствии с этот пост это сообщение об ошибке означает:
Размер кучи больше, чем физическая память вашего компьютера.
Изменить: Куча - это не единственная память, которая зарезервирована, я полагаю. По крайней мере, есть другие настройки JVM, такие как PermGenSpace, которые запрашивают память. С размером кучи 128M и PermGenSpace 64M вы уже заполняете доступное пространство.
Почему бы не уменьшить другие настройки памяти, чтобы освободить место для кучи?