【发布时间】:2014-07-02 20:02:42
【问题描述】:
更具体地说,这是 Richfaces 3.1.HomeMadePatch/JSF1.1 中的 AjaxStateManager。我不对这些技术选择负责,并且我已经阅读了诸如1、2、3 之类的相关问题,这些问题基本上建议升级版本或切换到无状态 JSF,如果我这样做我会很高兴可以,但是由于应用程序的巨大性,我恐怕不能这样做。
回到正题,我目前正在尝试优化内存堆消耗。由于我的前辈几乎为每个 bean 设置了会话范围,并将服务器超时设置为 6 小时(在浏览器中过期之前刷新了一些 javascript),因此用户的会话非常长,并且不断积累内存。我自己做了一些优化(嗯,这是一种模拟对话范围:当点击某些页面时,我会清理主 bean 中的所有内容)。现在,当用户返回主页时,他们的会话大小约为 300kb,细分如下:
- AjaxStateManager$SynchronizedStateHolder:280kb
- 会话中的其他对象:20kb
这些结果是通过使用 Eclipse MAT 进行堆转储和分析内存获得的。如您所见,93% 的内存是 Ajax 维护无用状态。我想强制它释放那些无用的状态。关于如何做到这一点的任何想法?
我曾考虑限制它可以保存的视图数量,但在某些页面中存在一些非常奇怪的形式重叠,我不确定如果我这样做它不会破坏。
提前谢谢..
【问题讨论】:
标签: jsf jakarta-ee richfaces ajax4jsf state-saving