«Ошибка при инициализации VM; Не удалось зарезервировать достаточно места для кучи объектов “, используя -Xmx3G
Прежде всего, у меня есть коробка с 8 ГБ оперативной памяти, поэтому я сомневаюсь, что проблема с памятью. Это приложение работает отлично на машинах с 6 ГБ или меньше.
Я пытаюсь зарезервировать 3 ГБ пространства, используя -Xmx3G в разделе «Аргументы VM» в «Запуск конфигурации в Eclipse».
Каждый раз, когда я пытаюсь зарезервировать более 1500 МБ, я получаю эту ошибку: «Ошибка при инициализации виртуальной машины; Не удалось зарезервировать достаточно места для кучи объектов “, используя -Xmx3G
- Ошибка переполнения стека Java - как увеличить размер стека в Eclipse?
- Разница между _JAVA_OPTIONS JAVA_TOOL_OPTIONS и JAVA_OPTS
- Увеличение максимального размера кучи JVM для приложений с интенсивной памятью
- Передача аргументов JVM Tomcat при работе в качестве службы?
- Как установить свойство Java-системы, чтобы оно было эффективным, когда я запускаю JVM без добавления его в аргументы командной строки
Что здесь происходит?
- Параметры кучи JVM
- увеличить размер кучи java навсегда?
- Счетчик исключений Java для JVM HotSpot
- Что делает -XX: MaxPermSize?
- Как установить -Dorg.apache.el.parser.COERCE_TO_ZERO = false программно
- Отладка java-приложения без запуска JVM с аргументами отладки
- Как отключить использование стека IPv6 для IPv4 IP на JRE?
- Поощрять JVM к GC, а не вырастить кучу?
Может быть, вы используете 32-битный jvm на этой машине?
Вот как это исправить: перейдите в Start->Control Panel->System->Advanced(tab)->Environment Variables->System
Variables->New: Variable name: _JAVA_OPTIONS Variable value: -Xmx512M Variable name: Path Variable value: ;C:\Program Files\Java\jre6\bin;F:\JDK\bin;
Измените это на соответствующий путь .
На самом деле это не проблема, связанная с Eclipse; это общая проблема Java-on-Windows. Это из-за того, как JVM выделяет память на Windows; он настаивает на распределении непрерывного fragmentа памяти, который часто не может предоставить Windows, даже если для удовлетворения запроса на распределение имеется достаточно отдельных fragmentов. Есть утилиты, которые попытаются помочь Windows «деfragmentировать» свою память, что теоретически поможет в этой ситуации; но я действительно не пробовал их всерьез, поэтому не могу говорить об их эффективности. Одна вещь, которую я слышал иногда, которая может помочь, – перезагрузить Windows и, прежде чем запускать какие-либо другие приложения, запустите Java-приложение, которое нуждается в большой части памяти. Если вам повезет, Windows еще не будет fragmentировать свое пространство памяти, а Java получит непрерывный блок, который запрашивает.
Где-то на межстранах есть больше технических объяснений и анализов этой проблемы, но у меня нет никаких ссылок.
Однако я нашел это, что выглядит полезным: https://stackoverflow.com/a/497757/639520
Сначала JRE 32 бит не может использовать больше ~ 1.5 ГБ RAM. Поэтому, если вы хотите больше, используйте 64-битную JRE.
Во-вторых, когда запускается новая JVM, эта сумма имеет значение -Xmx для всех запущенных JVM и проверяет, осталось ли в памяти достаточное количество памяти для запуска в своем собственном -Xmx, если этого недостаточно, возникает ошибка.
Я использовал Liferay с сервером Tomcat из Eclipse IDE. Я застрял в этой же ошибке при щелчке по запуску сервера. Дважды щелкните по серверу из eclipse. он откроет страницу Обзор сервера. Обновленные аргументы памяти от -Xmx1024m -XX: MaxPermSize = от 256 до -Xmx512m -XX: MaxPermSize = 256 м. Тогда он работал на меня.
Убедитесь, что Eclipse на самом деле работает с тем же JVM, который, по вашему мнению, работает. Если вы когда-либо используете java в своем веб-браузере, у вас, вероятно, будет 32-разрядная версия, которая тоже будет иметь приоритет, если она будет установлена или обновлена в последнее время.
Чтобы быть абсолютно уверенным, я рекомендую добавить эти две строки в ваш файл eclipse.ini
вверху:
-vm C:/Java/jdk1.6.0_27/bin
… где на моей машине C:/Java/jdk1.6.0_27/bin
где находится JVM, я знаю, 64-битный. Обязательно наличие папки bin
.
(В качестве бонуса в Windows 7 это также позволяет вам «привязать вкладку», поэтому я должен был сделать это для собственного использования)
Это вопрос размера кучи. Измените свой .bat
(пакетный файл). Он может показывать размер кучи 1024. Измените его на 512. Тогда он должен работать.
У меня также была та же проблема при использовании Eclipse, которая была 32 бит, а JVM, используемая ею, была 64 бит. Когда я направил Eclipse на 32-разрядную JVM, тогда он работал
Возможно, вы все равно пытаетесь ошибиться. Я получил аналогичную ошибку с поддержкой журнала ошибок:
Java HotSpot(TM) Client VM warning: ignoring option PermSize=32M; support was removed in 8.0 Java HotSpot(TM) Client VM warning: ignoring option MaxPermSize=128M; support was removed in 8.0
В моем случае программное обеспечение еще не поддерживало java 8 (сценарий использовал старые аргументы JVM), но по умолчанию у меня был java 8.
Одной из причин этой проблемы является отсутствие памяти для Tomcat. Попробуйте удалить ненужное запущенное программное обеспечение из окон и перезапустить eclipse и tomcat.