Вы получаете java.lang.OutOfMemoryError: Java heap space
1) Простой способ решить OutOfMemoryError в java - это увеличить максимальный размер кучи с помощью параметров JVM "-Xmx512M", это немедленно решит вашу OutOfMemoryError.
Это мое предпочтительное решение, когда я получаю OutOfMemoryError в Eclipse, Maven или ANT при построении проекта, потому что в зависимости от размера проекта вы можете легко исчерпать память. Вот пример увеличения максимального размера кучи JVM.
Также лучше сохранять соотношение -Xmx к -Xms 1: 1 или 1: 1,5, если вы устанавливаете размер кучи в своем Java-приложении
export JVM_ARGS = "- Xms1024m -Xmx1024m"
2) Второй способ разрешить OutOfMemoryError в Java довольно сложен и возникает, когда у вас мало памяти и даже после увеличения максимального размера кучи вы все еще получаете java.lang.OutOfMemoryError, в этом случае вы, вероятно, захотите профилировать ваше приложение и ищите любую утечку памяти.
Если вы используете Eclipse IDE, вы можете использовать Eclipse Memory Analyzer для проверки своего дампа кучи или использовать любой профилировщик, например Netbeans или JProbe. Это сложное решение, требующее некоторого времени для анализа и обнаружения утечек памяти.
3) Существует множество инструментов для исследования и исправления OutOfMemoryError в Java
----> Visualgc
Visualgc означает инструмент визуального мониторинга сборки мусора, и вы можете присоединить его к вашей инструментированной JVM хост-точки. Основным преимуществом visualgc является то, что он отображает все ключевые данные графически, включая загрузчик классов, сборщик мусора и данные о производительности компилятора JVM.
Целевая JVM идентифицируется по идентификатору виртуальной машины, также называемому vmid.
----> Jmap
Jmap - это утилита командной строки, поставляемая с JDK6 и позволяющая получить дамп памяти кучи в файле. Это легко использовать как показано ниже:
jmap -dump: format = b, file = heapdump 6054
Здесь файл указывает имя файла дампа памяти, который является "heapdump", а 6054 - PID вашего прогресса Java. Вы можете найти PDI с помощью "ps -ef" или диспетчера задач Windows или с помощью инструмента под названием "jps" (Инструмент состояния процесса виртуальной машины Java).
----> Jhat
Jhat ранее был известен как hat (инструмент для анализа кучи), но теперь он является частью JDK6. Вы можете использовать jhat для анализа файла дампа кучи, созданного с помощью "jmap". Jhat также является утилитой командной строки, и вы можете просмотреть ее из окна cmd, как показано ниже:
jhat -J-Xmx256m heapdump
Здесь будет проанализирован дамп памяти, содержащийся в файле "heapdump". Когда вы запустите jhat, он прочитает этот файл дампа кучи, а затем начнет прослушивать порт http, просто укажите свой браузер на порт, где jhat прослушивает по умолчанию 7000, а затем вы можете начать анализ объектов, присутствующих в дампе кучи.
Надеюсь, это поможет.