2016-11-30 8 views
0

Я получаю java.lang.OutOfMemoryError в одном из моих приложений java. Я увеличил размер минимального и максимального размера кучи под «VM аргументами» в затмении:Другие причины для «OutOfMemoryError»?

-XX:+HeapDumpOnOutOfMemoryError -Xmx8g -Xms2g However, I'm still getting same error. In jconsole.exe it displays the following: jconsole screenshot

Если я правильно понял, то я до сих пор есть много памяти кучи.

Я также проанализировал дамп памяти, используя затмение MAT MAT screenshot

Как вы можете видеть, это показывает проблему, но только 9 МБ. Так в чем же проблема? не должен ли я иметь достаточно свободной памяти кучи?

+1

Похоже, что у вашей проблемы нет памяти, но [утечки памяти] (https://en.wikipedia.org/wiki/Memory_leak). Независимо от того, сколько памяти вы назначили, он в конечном итоге бросит OOM. – m0skit0

+0

Не могли бы вы указать свою версию/платформу java и поместить полное сообщение об исключении? Это может быть ошибка пермгета, если <= 1.7, ... – pdem

+0

@pdem У меня 1,8 64 бит. Полное сообщение «java.lang.OutOfMemoryError: Java heap space», затем он печатает трассировку стека. Как упоминалось в m0skit0 и JensB, это связано с утечкой памяти, которая должна быть исправлена, и увеличение памяти кучи не решит проблему –

ответ

1

Не строго относится к java, но это также может быть вызвано попыткой сохранить что-то в вашей памяти, которое не может вместить все в одном месте.

Рассмотрите автостоянку с металлическими брусьями между каждой парковочной зоной. Есть 20 пустых мест для мотоциклов. Вы хотите оставить свой внедорожник. Несмотря на то, что общая площадь доступного пространства больше, чем ваши требования к транспортным средствам, вы по-прежнему не можете припарковаться, поскольку он не может вписаться в какое-либо одно место.

Я не знаю, здесь ли это, но это самая распространенная причина, по которой я сталкиваюсь с этой проблемой.

Вы пытаетесь сохранить что-то значительно большее, чем что-либо еще, где-нибудь рядом с этой ошибкой?

+0

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

+0

Вы правы. Я нашел проблему, она пыталась создать массив элементов «1836020326»! это число было неправильно проанализировано из неправильных строковых данных. –

 Смежные вопросы

  • Нет связанных вопросов^_^