Утечка памяти без исключения OutOfMemory? - PullRequest
1 голос
/ 08 августа 2011

У меня проблема с моей программой (JSF работает на Glassfish). Он обрабатывает много данных (и вставляет их в базу данных, используя hibernate). И проблема в том, что примерно через 2 часа работы он замедляется. Я не получаю никаких исключений (особенно нет OutOfMemory). Возможно ли, что это утечка памяти? Я проверил дамп кучи с помощью Eclipse Memory Analyzer, и были некоторые проблемы с HashMap. Я восстановил его там, где это было возможно, и теперь инструмент не показывает эту проблему. Но мое приложение все еще не работает должным образом.

Ответы [ 2 ]

3 голосов
/ 08 августа 2011

Похоже, ваша проблема вовсе не является обычной утечкой памяти.

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

Вероятно, вам следует сосредоточиться на профилировании производительности, чтобы увидеть, куда идет время, и найти признаки конфликта блокировки.

0 голосов
/ 08 августа 2011

Есть вероятность, что у вас какая-то утечка памяти и создают много временных объектов, так что через некоторое время сборщик мусора снижает вашу производительность. Если это так, вы можете поиграть с опцией -Xmx: при меньшем размере кучи ваше приложение должно замедляться раньше, большая куча должна показывать противоположный эффект.

Эффект также может быть вызван растущими внутренними структурами данных. Операции над структурами данных всегда имеют временную сложность («Big-O-Notation»), и если сложность является полиномной или даже хуже, такие операции также могут снизить производительность. Посмотрите на те коллекции в ваших приложениях, которые со временем растут, и дважды проверьте, что вы выбрали оптимальный тип коллекции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...