内存泄漏 org.jboss.modules.ModuleClassLoader。

我正在升级我的 JBoss、java 和 hibernate 版本


JBoss 6 到 Wildfly 11


休眠 4 到休眠 5.1


和 java 6 到 java 8


但是我遇到了 java 堆的这个问题,79% 的内存被 ConcurrentHashMap 对象占用,我做了一个堆转储和 eclipse 分析器,我看到主要错误来自这个错误


"类加载器/组件 "org.jboss.modules.ModuleClassLoader @ 0x6c27d1230" 占用 2.877.603.336 (79,10%) 字节。内存在加载的 "java.util.concurrent.ConcurrentHashMap$Node[]" 的一个实例中累积通过“系统类加载器”。


如果我看到详细信息,Dominator Tree 中的累积对象会显示:



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)


我真的不明白为什么会发生这种情况,因为使用旧技术,不会发生这种情况。


胡说叔叔
浏览 169回答 2
2回答

UYOU

最后是代码中的一个错误,每次我有一个 NOT_ACTIVE 状态时我都有一个“重新连接”,这个重新连接会建立新的连接并在应用程序中产生内存泄漏。删除此重新连接并排除 NOT_ACTIVE 状态是解决此问题的方法。

BIG阳

SessionFactoryRegistry 跟踪应用程序创建的 SessionFactory。通常你只需要一个 SessionFactory,创建一个很昂贵。通常 SessionFactory 在启动时被初始化并且 Session 对象被自动注入。有多种方法可以实现这一目标,但您可以从这里开始
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java