Рубрики
Без рубрики

Eclipse – java.язык. Ошибка из памяти: Пространство кучи Java

В этой статье показано, как решить java.lang. Ошибка из памяти: Пространство кучи Java в среде разработки Eclipse.

Автор оригинала: mkyong.

В этой статье показано, как решить java.lang. Ошибка из памяти: Пространство кучи Java в среде разработки Eclipse.

Содержание

  • 1. Затмение – ошибка памяти: Пространство кучи Java
  • 2. Временное исправление – Увеличение размера кучи
  • 3. Временное исправление – Увеличение размера кучи
  • 4. Решение, найдите причину ошибки размера кучи.
  • 5. Рекомендации

1. Затмение – ошибка памяти: Пространство кучи Java

В Eclipse IDE, если код Java потребляет много памяти (загрузка больших данных за один раз), как это:

  // loads a lot of data
  List list = 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?
  List list = domainBo.findAllDomain(100000);

  for(Domain domain : list){
    process(domain.getDomainName());
  }

Если мы не уверены, в чем причина корня, попробуйте инструмент профилирования, такой как Java Flight Recorder, для создания дампов и анализа JVM.

5. Рекомендации

Оригинал: “https://mkyong.com/eclipse/eclipse-java-lang-outofmemoryerror-java-heap-space/”