Не удалось зарезервировать достаточно места для кучи объектов - PullRequest
247 голосов
/ 09 декабря 2010

Я получаю следующее исключение несколько раз каждый раз, когда я пытаюсь запустить программу.

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

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

Не удалось создать виртуальную машину Java.

Я пытался увеличить свою виртуальную память (размер страницы) и объем оперативной памяти, но безрезультатно. Может кто-нибудь сказать мне, как я могу устранить эту ошибку?

Ответы [ 25 ]

6 голосов
/ 09 декабря 2010

Предположим, ваш класс называется Test в пакете mypackage.Запустите ваш код следующим образом:

java -Xmx1024m mypackage.Test

Это зарезервирует 1024 МБ кучи для вашего кода.Если вы хотите 512 МБ, вы можете использовать:

java -Xmx512m mypackage.Test

Использовать маленькие метки в 1024m, 512m и т. Д.

5 голосов
/ 15 декабря 2015

У меня были похожие проблемы. Я установил 32-битную версию Java на 64-битной машине.

Удаляя эту версию и устанавливая 64-битную версию Java. Я смог решить проблему.

3 голосов
/ 13 февраля 2013

Я недавно столкнулся с этой проблемой. У меня есть 3 Java-приложения, которые начинаются с кучи размером 1024 м или 1280 м. Java ищет доступное пространство в разделе подкачки, и если недостаточно памяти, jvm завершает работу.

Чтобы решить эту проблему, мне пришлось закрыть несколько программ, у которых было выделено большое количество виртуальной памяти.

Я работал на x86-64 linux с 64-битной jvm.

2 голосов
/ 19 января 2015

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

2 голосов
/ 09 декабря 2010

Если у вас достаточно свободной памяти и вы правильно настроили аргументы JVM, у вас может возникнуть проблема фрагментации памяти. Проверьте Максимальный объем памяти Java в Windows XP .

2 голосов
/ 04 апреля 2014

Если вы используете 32-битную JVM, измените размер кучи на меньший, вероятно, это поможет.Вы можете сделать это, передавая аргументы в java напрямую или через переменные окружения, например:

java -Xms128M -Xmx512M
JAVA_OPTS="-Xms128M -Xmx512M"

Для 64-битной JVM должен работать больший размер кучи, такой как -Xms512M -Xmx1536M.

Run java -versionили java -d32, java--d64 для Java7, чтобы проверить, какую версию вы используете.

1 голос
/ 13 октября 2016

Произошла ошибка при инициализации виртуальной машины. Не удалось зарезервировать достаточно места для кучи объектов 1572864 КБ.

Я изменил значение памяти в файле settings.grade 1536 на 512, и это помогло

1 голос
/ 03 июля 2014

В любом случае, вот как это исправить: Перейдите в Пуск-> Панель управления-> Система-> Дополнительно (вкладка) -> Переменные среды-> Системные переменные-> Создать: Имя переменной: _JAVA_OPTIONS Значение переменной: -Xmx512M

ИЛИ

Измените вызов муравья, как показано ниже.

   <exec
        **<arg value="-J-Xmx512m" />**
    </exec>

Это сработало для меня.

0 голосов
/ 24 апреля 2018

Перейдите в Пуск-> Панель управления-> Система-> Дополнительно (вкладка) -> Переменные среды-> Системные переменные-> Новое:

Variable name: _JAVA_OPTIONS
Variable value: -Xmx512M
0 голосов
/ 30 октября 2017

Я получил ту же ошибку, и она была устранена, когда я удалил временные файлы, используя% temp% и перезапустив Eclipse.

...