Утечка памяти org.jboss.modules.ModuleClassLoader.Память накапливается в одном экземпляре java.util.concurrent.ConcurrentHashMap (на wildfly) - PullRequest
0 голосов
/ 25 апреля 2019

Я обновляю свою версию JBoss, java и hibernate с

JBoss 6 для wildfly 11

Hibernate 4 до Hibernate 5.1

и Ява 6 до Ява 8

но я сталкиваюсь с этой проблемой с кучей java, 79% памяти занято объектом ConcurrentHashMap, я сделал дамп кучи и с анализатором затмений, и я увидел, что основная ошибка происходит из-за этой ошибки

"Загрузчик классов / компонент" org.jboss.modules.ModuleClassLoader @ 0x6c27d1230 "занимает 2,877.603,336 (79,10%) байт. Память накапливается в одном экземпляре java.util.concurrent.ConcurrentHashMap $ Node [ ] "загружен" системным загрузчиком классов ".

и если я увижу подробности, Накопленные Объекты в Дереве Доминаторов показывают это:


org.jboss.modules.ModuleClassLoader -> 2.877.603.336 (Retained Heap)

-java.util.Vector @ 0x6c27d4db0 -> 2.877.123.872 (Retained Heap)

--java.lang.Object[20480] -> 2.877.123.840 (Retained Heap)

---class org.hibernate.internal.SessionFactoryRegistry -> 2.840.910.848 (Retained Heap)

-----org.hibernate.internal.SessionFactoryRegistry -> 2.840.910.168 (Retained Heap)

------java.util.concurrent.ConcurrentHashMap -> 2.840.909.848 (Retained Heap)

-------java.util.concurrent.ConcurrentHashMap$Node[256]-> 2.840.909.784 (Retained Heap)

Я действительно не понимаю, почему это происходит, потому что при использовании старых технологий не происходит ни одной.

Ответы [ 2 ]

0 голосов
/ 09 мая 2019

В конце была ошибка в коде, у меня было «переподключение» каждый раз, когда у меня был статус NOT_ACTIVE, при этом переподключение создавало новые соединения и генерировало утечку памяти в приложении.

Удаление этого переподключения и исключение статуса NOT_ACTIVE было решением этой проблемы.

0 голосов
/ 25 апреля 2019

SessionFactoryRegistry отслеживает SessionFactory, созданный вашим приложением.Обычно вам нужен только один SessionFactory, создать его дорого.Обычно SessionFactory инициализируется при запуске, а объект Session вводится автоматически.Есть разные способы для достижения этой цели, но вы можете начать здесь

...