jsf - JSF绑定会不会导致内存泄漏,导致HTTP Session中出现上千个UI组件
问题描述
我们发现系统经常内存不足,运行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
?
解决方案
推荐阅读
- python - 可以终止作为池中工作人员的 python 进程吗?
- php - 间歇/随机`无法连接到'XXX.XXX.XXX.XXX'(60)上的MySQL服务器'?
- rust - 如何为库指定 macOS 部署目标?
- assembly - 使用 nasm 汇编程序可以正常打印的引导加载程序
- scala - 使用 Doobie 在单个事务中进行多个查询?
- javascript - 检查文档是否包含类似于 Javascript 中指定字符串的类
- c++ - VSCode Terminal 找不到 'make' 'g++',但标准的 Windows 控制台可以
- pandas - 如果使用一个或多个参数,如何传递函数参数
- python-3.x - 交互式数据输入应用程序并链接到服务器数据库
- ruby - Mac 上的 Fastlane 禁用可用性