Автор оригинала: mkyong.
В этой статье показано, как решить java.lang. Ошибка из памяти: Пространство кучи Java
в среде разработки Eclipse.
Содержание
- 1. Затмение – ошибка памяти: Пространство кучи Java
- 2. Временное исправление – Увеличение размера кучи
- 3. Временное исправление – Увеличение размера кучи
- 4. Решение, найдите причину ошибки размера кучи.
- 5. Рекомендации
1. Затмение – ошибка памяти: Пространство кучи Java
В Eclipse IDE, если код Java потребляет много памяти (загрузка больших данных за один раз), как это:
// loads a lot of data Listlist = domainBo.findAllDomain(100000); for(Domain domain : list){ process(domain.getDomainName()); }
Мы попали java.lang. Ошибка из памяти: Пространство кучи Java
:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at java.util.HashMap.(HashMap.java:209) at java.util.LinkedHashMap. (LinkedHashMap.java:181)
2. Временное исправление – Увеличение размера кучи
В меню Eclipse нажмите Выполнить -> Выполнить конфигурации..
, выберите приложение Java, которое мы хотим запустить, перейдите на вкладку Аргументы
, раздел Аргументы виртуальной машины
и настройте лучший начальный максимальный размер кучи Java.
-Xms- Set initial Java heap size -Xmx - Set maximum Java heap size
Например, -XMS512M -xmx1024m
3. Например, || -XMS512M -xmx1024m
Настройки памяти в eclipse.ini
предназначены только для среды разработки Eclipse, а не для программы, которую мы хотим запустить. Распространенной ошибкой является обновление размера кучи в eclipse.ini
и ожидается, что это устранит ошибку размера кучи в программе.
Но, если без причины постоянно происходит сбой среды разработки Eclipse, мы можем увеличить размер кучи и изменить ее в eclipse.ini
.
-startu openFile -showsplash //... -XX:MaxPermSize=512m -Xms512m -Xmx1024m //... -Xdock:icon=../Resources/Eclipse.icns -XstartOnFirstThread
P.S Найди Найди в папке установки Eclipse.
Примечание Приложение Java, сценарии сборки Ant/Maven или примеры модульных тестов запускаются как внешний инструмент из Eclipse и не наследуют настройки виртуальной машины в eclipse.ini.
4. Решение, найдите причину ошибки размера кучи.
Мы можем увеличить размер кучи Java, чтобы временно устранить проблему, и та же проблема с размером кучи вернется к нам позже. Реальное решение состоит в том, чтобы определить основную причину ошибки размера кучи Java и зачем нам нужен такой большой размер кучи?
В приведенном выше коде, почему нам нужно загружать 100 тысяч записей одновременно? Можем ли мы передавать данные потоком или обрабатывать их пакетно?
// Why? Can you stream it? Or process by batch? Listlist = domainBo.findAllDomain(100000); for(Domain domain : list){ process(domain.getDomainName()); }
Если мы не уверены, в чем причина корня, попробуйте инструмент профилирования, такой как Java Flight Recorder, для создания дампов и анализа JVM.
5. Рекомендации
- Часто задаваемые вопросы Как мне увеличить размер permgen, доступный для Eclipse?
- Узнайте Размер Вашей Памяти Кучи Java
- Как имитировать java.lang. Ошибка OutOfMemoryError в Java
- Eclipse + Tomcat – Java. Лэнг. Ошибка из памяти: Пространство кучи Java
Оригинал: “https://mkyong.com/eclipse/eclipse-java-lang-outofmemoryerror-java-heap-space/”