Как исправить OutOfMemoryException? - PullRequest
0 голосов
/ 06 февраля 2019

Существует приложение Java на Spring + WebSphere 8.5.5.13

У меня есть экземпляр этого приложения на серверах разработки с WebSphere и на удаленном подготовительном сервере без данных.

Итак,когда админы перезагружают pre-prod сервер - возникает ошибка OutOfMemoryException.Но на dev-серверах такой проблемы нет.

  • Есть ли у вас алгоритм для устранения подобных проблем?

  • Увеличивается ли размер jvmрешить эту проблему?

  • Как увеличить размер jvm для приложений на was?

Ответы [ 3 ]

0 голосов
/ 06 февраля 2019

OutOfMemoryException может быть вызвано несколькими причинами:

  • недостаточно памяти кучи
  • не хватает постоянной памяти для большого объекта, вызванной фрагментацией кучи
  • GC не освобождает память достаточно быстро, например, из-за постоянного выделения, если в сообщении читается GC overhead limit exceeded
  • недостаточно файловых дескрипторов, если в сообщении читается Unable to create new native thread

При условии применения и данныхидентичен, чем ваши DEV и PRE-PROD окружение настроены по-разному.Это основная причина, и ее следует устранить, поскольку разработчики не могут воспроизвести проблему на DEV.

0 голосов
/ 08 февраля 2019

java.lang.OutOfMemoryError генерируется, когда недостаточно места для размещения объекта в памяти кучи.Здесь сборщик мусора не может освободить достаточно места для размещения нового объекта, а память кучи исправлена ​​и не может быть расширена.Эта ошибка может возникать, когда большая часть времени затрачивается на сборку мусора и освобождается очень мало памяти, а также когда недостаточно памяти для загрузки java-класса и даже даже.

Вы должны посмотреть напечатанную трассировку стекакогда выбрасывается java.lang.OutOfMemoryError, как сказано, для этого может быть много причин.Ниже приведены несколько

Исключение в потоке имя_потока: java.lang.OutOfMemoryError: Java-пространство кучиИсключение Metaspace в потоке имя_потока: java.lang.OutOfMemoryError: размер байта запроса по причине.Вне пространства подкачки?Исключение в потоке имя_потока: java.lang.OutOfMemoryError: причина: stack_trace_with_native_method

На основании ошибки мы можем соответствующим образом настроить параметры JVM.Увеличение JVM всегда может не решить проблему, так как могут быть другие проблемы, такие как утечки памяти.

0 голосов
/ 06 февраля 2019

У вас есть OutOfMemoryError (не OutOfMemoryException), когда вы превышаете размер кучи:

Выдается, когда виртуальной машине Java не удается выделить объект, поскольку ей не хватает памяти, и нетсборщик мусора может выделить больше памяти

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

Наиболее распространенные проблемы, связанные с OutOfMemoryError, могут быть:

  • Кэшированные данные : если вы кэшируете объекты, возможно, что кэшированные данные в dev меньшечем в предварительной рабочей среде
  • Загрузка файла : проверьте, загружаете ли вы файлы.Вполне возможно, что размер файла больше в подготовительном периоде
  • Загрузка базы данных : если вы загружаете данные из базы данных, число записей в подготовительном процессе может быть слишком большим, чтобы вместить всеих в памяти.В этом случае вам нужно разбить на страницы
  • Проблема алгоритма : Например, вы можете создать путь для соединения с узлами в графе, но если алгоритм не выполнен должным образом, возможно, что путьв бесконечности.В dev это может работать, потому что у вас разные данные.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...