Необходимо знать основную причину "OutOfMemoryError: Java Heap Space"

Я получаю следующую ошибку на машине Linux.

Exception in thread "http-8080-Processor17" java.lang.OutOfMemoryError:Java Heap Space

и один из портов 8080 время от времени находится в состоянии ожидания.

Пожалуйста, предложите основную причину проблемы.

3 ответа

Чтобы найти причину исключения из памяти, вы можете создать дамп потока вашего приложения. Чтобы получить дамп потока, выполните команду:

kill -3 <process_id>

где <process_id> pid вашего процесса. Вы можете найти его с помощью:

ps aux | grep java

или любой другой доступный инструмент. Дамп потока будет отправлен в стандартный поток вывода без прерывания процесса. Таким образом, вы можете анализировать журналы. Вы также можете использовать следующую опцию JVM:

-XX:OnOutOfMemoryError="kill -3 %p"

автоматически генерировать дампы потоков вашего процесса при каждой ошибке OutOfMemory.

Вы можете иметь конечную кучу независимо от того, на какой платформе вы работаете, будь то Linux, Windows или любая другая платформа. Java Выделите ограниченный объем памяти для запуска программы. это пространство памяти можно разделить на две области.

  1. Куча: хранит объекты.
  2. PermSpace: хранит метаданные пользовательского класса.

Вы можете инициализировать кучу и PermSpace, передав аргументы "-XX:MaxPermSize". Вы можете инициализировать размер кучи, передав аргументы "-Xmx", если вы не инициализируете, JVM выделит память по умолчанию для вашего приложения.

Вы можете установить флажок Использовать Java Memory Profiler, чтобы проверить, какая часть вашей программы использует больше места в памяти.

java.lang.OutOfMemoryError:Java Heap Space: обычно происходит из-за недостатка системной памяти (для JVM), иногда это также может происходить из-за утечек памяти (программирование).

JVM выдает "OutOfMemoryError", когда ему не хватает памяти кучи Java

Чтобы решить OutOfMemoryError: пространство кучи Java, (простой способ)

увеличить размер кучи, задав аргументы JVM "-Xms" и -Xmx" - минимальный и максимальный размер кучи

проверьте текущее значение и увеличьте его как "-Xmx1024M"

Если это не решено, то это должно быть из-за утечки памяти (узнайте больше о том, как исправить утечку памяти). Для лучшего понимания обратитесь: Java Heap Space

Другие вопросы по тегам