【发布时间】:2011-07-29 06:09:23
【问题描述】:
我正在开发一个基于 RichFaces 的 JSF 应用程序,该应用程序将 com.sun.faces.numberOfViewsInSession 和 com.sun.faces.numberOfLogicalViews 参数设置为 1,但将大部分托管 bean 设置为“会话”范围。如果减少内存占用是主要目标(页面渲染时间也不会显着恶化),那么更好的选择是什么?
- 将范围更改为“请求”,以便视图状态不会保持太久(与范围设置为“会话”时不同)。
我在某处读到 bean 的范围可能会影响视图的大小(并且“请求”范围的 bean 在请求结束时不一定可用于 GC)。在这种情况下,我已经看到了性能下降,尽管如此。
- 将范围更改为“应用程序”,因为许多页面与用户无关,并且不会根据经过身份验证的用户而真正改变。应用程序范围将导致单例,因此,与 bean 关联的整体内存是否会显着降低,因为它不与用户绑定?
另外,这会导致 JSF 视图停留太久吗?如果是,这将比当前会话范围 bean 的情况更糟。
最后但并非最不重要的一点是,一个视图中有多种形式。这是否也会在增加内存占用方面发挥作用?
【问题讨论】:
-
当您显然需要极小的内存占用时,为什么还要使用基于状态组件的 MVC 框架(如 JSF)?
-
好问题。我正在继承代码/架构,并且仅限于我可能进行的架构更改的性质。我希望能够充分利用现有架构并对其进行扩展。
标签: jsf memory richfaces scalability