簡體   English   中英

內存泄漏org.jboss.modules.ModuleClassLoader。 內存在java.util.concurrent.ConcurrentHashMap的一個實例中累積(在wildfly上)

[英]Memory leak org.jboss.modules.ModuleClassLoader. The memory is accumulated in one instance of java.util.concurrent.ConcurrentHashMap (on wildfly)

我正在升級我的JBoss版本,java和hibernate

JBoss 6 to wildfly 11

hibernate 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)

我真的不明白為什么會這樣,因為使用舊技術,而不是這種情況發生。

SessionFactoryRegistry跟蹤應用程序創建的SessionFactory。 通常你只需要一個SessionFactory,創建一個SessionFactory很昂貴。 通常,SessionFactory在啟動時初始化,並自動注入Session對象。 有多種方法可以實現這一目標,但您可以從這里開始

最后是代碼中的一個錯誤,每次我有一個NOT_ACTIVE狀態時我都有一個“重新連接”,這次重新連接會在應用程序中構建新的連接並產生內存泄漏。

刪除此重新連接並排除NOT_ACTIVE狀態是此問題的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM