Не удалось зарезервировать достаточно места для кучи объектов
Когда я бегу, я получаю следующее исключение несколько раз каждый раз, когда пытаюсь запустить программу.
Произошла ошибка при инициализации ВМ
Не удалось зарезервировать достаточно места для кучи объектов
Не удалось создать виртуальную машину Java.
Я пытался увеличить свою виртуальную память (размер страницы) и объем оперативной памяти, но безрезультатно. Может кто-нибудь сказать мне, как я могу устранить эту ошибку?
28 ответов
Запустите JVM с -XX:MaxHeapSize=512m
(или любое большое число) (или -Xmx512m
коротко)
Это также может быть вызвано установкой чего-то слишком большого в 32-битном HotSpot vm, например:
-Xms1536m -Xmx1536m
где это может / будет работать:
-Xms1336m -Xmx1336m
Вот как это исправить:
- Перейдите в Пуск-> Панель управления-> Система-> Дополнительно (вкладка)-> Переменные среды-> Система
Переменные-> Новый: Имя переменной: _JAVA_OPTIONS
Значение переменной: -Xmx512M
Имя переменной: Path
Значение переменной: %PATH%;C:\Program Files\Java\jre6\bin;F:\JDK\bin;
Измените это на свой подходящий путь.
Я столкнулся с этим при использовании javac, и это не похоже на параметры командной строки,
-bash-3.2$ javac -Xmx256M HelloWorldApp.java
Error occurred during initialization of VM
Could not reserve enough space for object heap
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
так что решение здесь так установить _JAVA_OPTIONS
-bash-3.2$ export _JAVA_OPTIONS="-Xmx256M"
-bash-3.2$ javac HelloWorldApp.java
Picked up _JAVA_OPTIONS: -Xmx256M
И это хорошо компилируется.
Это происходит со мной на машинах с большим количеством оперативной памяти, но с меньшим пределом памяти. Java решает выделить большую кучу, потому что обнаруживает оперативную память в машине, но ей не разрешено выделять ее из-за ограничений.
32-битная Java требует непрерывного свободного места в памяти для запуска. Если вы укажете большой размер кучи, свободного места в памяти может быть не так много, даже если у вас будет гораздо больше свободного места, чем необходимо.
Установка 64-битной версии Java помогает в этих случаях, непрерывное требование к памяти относится только к 32-битной Java.
В сочетании с -Xmx512M используйте -d64, чтобы убедиться, что вы используете 64-битную виртуальную машину. На 64-битной машине я точно думал, что использую 64-битную виртуальную машину, но нет. После установки 64-битной Java работает опция -d64, а -Xmx позволяет значительно увеличить объем памяти.
java -d64 -Xmx512M mypackage.Test
Откройте файл gradle.properties в папке android.
Замените эту строку:
org.gradle.jvmargs=-Xmx1536M
с:
org.gradle.jvmargs=-Xmx512m
Объяснение: Максимальный предел из документа Gradle:
Если в запрошенной среде сборки не указан максимальный размер кучи, демон будет использовать до 512 МБ кучи.
Я получил ту же ошибку и решил ее, настроив в файле run.conf.bat
Запустите JVM с настройкой run.conf.bat в Jboss5x
Если свободная память недоступна, поскольку вы передаете это утверждение, внесите изменения в run.conf.bat
set "JAVA_OPTS=-Xms512m -Xmx512m -XX:MaxPermSize=256m
У меня была похожая проблема. Я установил 32-битную версию Java на 64-битной машине. После удаления этой версии и установки 64-битной версии Java. Я был в состоянии решить проблему.
Я знаю, что здесь уже есть много ответов, но ни один из них не помог мне. В конце концов я открыл файл /etc/elasticsearch/jvm.options
и изменилось:
-Xms2G
-Xmx2G
в
-Xms256M
-Xmx256M
Это решило это для меня. Надеюсь, это поможет кому-то еще здесь.
Ошибка:
Для ошибки"ошибка произошла во время инициализации vm, не мог зарезервировать достаточно места для кучи объекта jboss"
Первопричина:
Неправильное / недостаточное выделение памяти для нашей JVM, как указано ниже.
например, JAVA_OPTS="-Xms1303m -Xmx1303m -XX:MaxPermSize=256m" в jboss-eap-6.2\bin\standalone.conf или "JAVA_OPTS=-Xms1G -Xmx1G -XX:MaxPermSize=256M" -jb \ -ap \ e \ standalone.conf.bat, который является ничем иным, как параметрами пула выделения памяти JVM.
Разрешение:
- Увеличьте размер кучи. Чтобы увеличить размер кучи,
- Перейти -> jboss-eap-6.2\bin\standalone.conf.bat или jboss-eap-6.2\bin\standalone.conf
- изменить ->JAVA_OPTS="-Xms256m -Xmx512m -XX:MaxPermSize=256m", где -Xms - минимальный размер кучи, а -Xmx - максимальный размер кучи.
Обычно его не рекомендуется иметь одинаковый размер для мин и макс.
Если вы запускаете свое приложение из Eclipse,
- Двойной клик на сервере
- выберите "Открыть конфигурацию запуска", и вы будете перенаправлены в окно "Редактировать свойства конфигурации запуска".
- В этом ветре перейдите на вкладку "(x)= Аргументы".
- В VM Arguments определите размер кучи, как указано ниже
- "-Dprogram.name=JBossTools: JBoss EAP 6.1+ Runtime Server" -server -Xms256m -Xmx512m -XX:MaxPermSize=256m -Dorg.jboss.resolver.warning=true
Иногда эта ошибка указывает на то, что физическая память и своп на сервере фактически используются полностью!
Недавно я видел эту проблему на сервере под управлением RedHat Enterprise Linux 5.7 с 48 ГБ оперативной памяти. Я обнаружил, что даже просто работает
java -version
вызвал ту же ошибку, которая установила, что проблема не была характерна для моего приложения.
Бег
cat /proc/meminfo
сообщили, что значения MemFree и SwapFree значительно ниже 1% значений MemTotal и SwapTotal соответственно:
MemTotal: 49300620 kB
MemFree: 146376 kB
...
SwapTotal: 4192956 kB
SwapFree: 1364 kB
Остановка нескольких запущенных приложений на компьютере несколько увеличила объем свободной памяти:
MemTotal: 49300620 kB
MemFree: 2908664 kB
...
SwapTotal: 4192956 kB
SwapFree: 1016052 kB
В этот момент новый экземпляр Java запустится нормально, и я смог запустить свое приложение.
(Очевидно, для меня это было лишь временное решение; у меня все еще есть непростая задача - более тщательно изучить процессы, выполняющиеся на этой машине, чтобы выяснить, можно ли что-то сделать, чтобы снизить номинальные уровни использования памяти, без приходится прибегать к остановке приложений.)
Предположим, ваш класс называется Test
в упаковке mypackage
, Запустите ваш код так:
java -Xmx1024m mypackage.Test
Это зарезервирует 1024 МБ кучи для вашего кода. Если вы хотите 512 МБ, вы можете использовать:
java -Xmx512m mypackage.Test
Используйте немного м в 1024m
, 512m
, так далее
У меня было правильное количество настроек памяти, но для меня это было использование 64-битного Intellij с 32-битной JVM. Как только я переключился на 64-битную ВМ, ошибка исчезла.
Я недавно столкнулся с этой проблемой. У меня есть 3 Java-приложения, которые начинаются с кучи размером 1024 м или 1280 м. Java ищет доступное пространство в разделе подкачки, и, если недостаточно памяти, jvm завершает работу.
Чтобы решить эту проблему, мне пришлось закрыть несколько программ, у которых было выделено большое количество виртуальной памяти.
Я работал на x86-64 Linux с 64-разрядной JVM.
Если вы используете 32-битную JVM, измените размер кучи на меньший, вероятно, это поможет. Вы можете сделать это, передав аргументы в java напрямую или через переменные окружения, например:
java -Xms128M -Xmx512M
JAVA_OPTS="-Xms128M -Xmx512M"
Для 64-битной JVM больший размер кучи, например -Xms512M -Xmx1536M
должно сработать.
Бежать java -version
или же java -d32
, java--d64
для Java7, чтобы проверить, какую версию вы используете.
Если у вас достаточно свободной памяти и вы правильно настроили аргументы JVM, у вас может возникнуть проблема фрагментации памяти. Проверьте максимальный объем памяти Java в Windows XP.
В любом случае, вот как это исправить: Перейдите в Пуск-> Панель управления-> Система-> Дополнительно (вкладка)-> Переменные среды-> Системные переменные-> Новое: Имя переменной: _JAVA_OPTIONS Значение переменной: -Xmx512M
ИЛИ ЖЕ
Измените вызов муравья, как показано ниже.
<exec
**<arg value="-J-Xmx512m" />**
</exec>
Это сработало для меня.
Произошла ошибка во время инициализации виртуальной машины. Не удалось зарезервировать достаточно места для кучи объектов размером 1572864 КБ.
Я изменил значение памяти в файле settings.grade 1536 на 512, и это помогло
Перейдите в Пуск-> Панель управления-> Система-> Дополнительно (вкладка)-> Переменные среды-> Системные переменные-> Создать:
Имя переменной: _JAVA_OPTIONS Значение переменной: -Xmx512M
В моем случае я не мог увеличить
org.gradle.jvmargs=-Xmx...
в
gradle.properties
свыше 1 ГБ. Это не сработало, потому что на моей машине было две установки Java, одна 32-битная (Gradle использовал эту), а другая 64-битная. Я решил проблему, добавив
JAVA_HOME
переменная среды, указывающая на 64-битную Java.
Вышеуказанные ответы верны, но я объясню эту проблему с лучшим решением. Когда вы назначили org.gradle.jvmargs=-Xmx512m и все еще сталкиваетесь с проблемой sa,=me, то вот решение. В основном эта ошибка возникает из-за того, что ваш компьютер использует 100% своей мощности, а ваш проект использует так много ресурсов , всякий раз, когда вы сталкиваетесь с этой проблемой, вы можете открыть диспетчер задач, и вы увидите, что ваш диск используется на 100%, а ваш компьютер слишком медленный, тогда вы можете просто отключить запускаемые приложения, которые интенсивно обрабатываются, и перезагрузить компьютер. После перезапуска, когда вы открываете свой проект, сначала очистите его, а затем попробуйте запустить. Я пробовал все вышеперечисленное решение, но все еще не смог решить проблему, затем я попытался освободить использование памяти и фоновые процессы, и моя проблема была решена.
Я получил ту же ошибку, и она была устранена, когда я удалил временные файлы, используя%temp% и перезапустив Eclipse.
В CASSANDRA_HOME/bin/cassandra.bat вы найдете следующую конфигурацию
REM JVM Opts we'll use in legacy run or installation
set JAVA_OPTS=-ea^
-javaagent:"%CASSANDRA_HOME%\lib\jamm-0.3.0.jar"^
-Xms**2G**^
-Xmx**2G**^
Вы можете уменьшить 2G до некоторого меньшего числа, например, 1G или даже меньше, и это должно работать.
То же самое, если вы работаете на Unix Box, измените в файле.sh соответствующим образом.
Иногда это относится к
$ sysctl vm.overcommit_memory
vm.overcommit_memory = 2
Если вы установите его:
$ sysctl vm.overcommit_memory=0
Он должен работать.
Замещать -Xmx2G^
с -Xms512M^
или любой больший объем памяти в файле cassandra.bat в каталоге cassandra bin.
Если вы запускаете Java-программу: - запустите вашу программу в терминале, используя правильную команду для Linux, это будет 'java -jar myprogram.jar' и добавьте -Xms256m -Xmx512m, например: 'java -jar myprogram.jar Xms256m -Xmx512m'
Если вы используете сценарий.sh (linux, mac?) Или.bat (windows), откройте сценарий и найдите параметры java, если они есть, и увеличьте объем памяти.
Если все вышеперечисленное не работает, проверьте ваши процессы (ctrl+alt+delete в windows) (ps aux в linux/mac) и убейте процессы, которые используют много памяти и не нужны вашей операционной системе! => Попробуйте перезапустить вашу программу.
Нет необходимости делать что-либо просто в файле POM, как показано ниже
<configuration>
<maxmemory>1024M</maxmemory>
</configuration>