我们发现系统经常内存不足,运行Full GC并没有帮助回收内存。然后,我们进行堆转储并分析内容。
JSF实现名称/版本Mojarra 2.1.28-jbossorg-2 服务器名称/版本:JBoss EAP 6.3
我们发现某些HTTP会话持有超过2GB的内存。以下链接中附带了来自MAT的dominator_tree的屏幕转储
https://drive.google.com/file/d/1zX1xHzpXBacrDuSNrS2Dp1kVUDm00uku/view?usp=sharing
它表明有许多org.primefaces.component.tabview.TabView
组件(其中约360个),每个组件都引用5M到9M的内存,并且引用系统中的一组特定的UI!
我在primefaces论坛上提出了一个问题,建议该问题可能与JSF绑定有关。
我检查了页面的来源,其中包含:
<f:actionListener binding="#{CourseInfoManagedBean.initBatchUpload()}"/>
其中CourseInfoManagedBean是@ViewScoped
bean。
会导致内存泄漏吗?
此外,为什么这些org.primefaces.component.tabview.TabView
UI组件是直接在org.apache.catalina.session.StandardSession
下而不是在com.sun.faces.util.LRUMap
下创建的?