首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AJAX4JSF/AjaxStateHolder /会话内存泄漏

AJAX4JSF/AjaxStateHolder /会话内存泄漏
EN

Stack Overflow用户
提问于 2011-10-03 12:15:52
回答 1查看 2.5K关注 0票数 1

我正在研究一个同时拥有大约300个用户的企业web应用程序的性能调优。我从GC日志中注意到,应用程序堆总是在增长,即使在完成GC之后,对象也总是在积累。我已经获得了一个生产堆转储,我很惊讶会话对象占用了堆大小的90%以上!这都是因为AjaxStateHolderObject。

应用程序运行在JSF1.X和RichFaces 3.3.0上。

在开始讨论之前,我尝试了以下几点:

  • 向web.xml

添加了以下代码

<context-param>

<param-name>org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION</param-name>

<param-value>1</param-value>

</context-param>

  • 向web.xml

添加了以下代码

<context-param>

<param-name>com.sun.faces.numberOfViewsInSession</param-name>

<param-value>1</param-value>

</context-param>

<context-param>

<param-name>com.sun.faces.numberOfLogicalViews</param-name>

<param-value>1</param-value>

</context-param>

  • 从RichFaces 3.3.0升级到3.3.3

所有这些尝试都未能解决内存泄漏问题。

更新

*由于AjaxStateHolder的巨大大小,单个用户会话最多可以消耗25 MB。

*应用程序的大多数托管bean都是请求范围,会话中没有未使用的引用对象,与内存有关的唯一问题是ajaxStateHolder。

提前感谢您的指导。

任何形式的帮助都会受到感谢,因为我在网上没有发现任何关于这个问题的东西。

EN

回答 1

Stack Overflow用户

发布于 2011-10-04 11:14:31

您似乎遇到了JSF/a4j会话内存泄漏缺陷。有关这一事项的更多说明,见下文链接:

https://issues.jboss.org/browse/RF-3878

它似乎是在会话中缓存视图状态,而不是清理。这是一个带有a4j的bug,无法修复,只是简单地处理。您添加到web.xml中的配置是唯一建议的解决方法,但显然这并没有太大帮助。

a4j似乎不是很可扩展,所以最好的长期解决方案是缓慢地将a4j组件从应用程序中重构出来,然后用不同的组件框架替换它们?对不起,我帮不上忙,祝你好运。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7634857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档