我正在研究基于RichFaces的JSF应用程序,该应用程序将com.sun.faces.numberOfViewsInSession和com.sun.faces.numberOfLogicalViews参数设置为1,但将大多数托管bean设置为“会话”范围。如果减少内存占用是主要目标(页面渲染时间也没有明显恶化),那么什么是更好的选择呢?
我在某处读到bean的范围可能与视图的大小有关(并且“请求”范围的bean在请求结束时可能不一定可用于GC)。我已经看到了这种情况下的性能下降,但是直截了当。
另外,这会导致JSF View徘徊一段时间吗?如果是,这将使它比目前使用会话范围的bean更糟糕。
最后但并非最不重要,视图中有多个表单。这是否可以在增加内存占用方面发挥作用?
答案 0 :(得分:0)
如果bean没有真正针对不同的用户进行更改,并且大部分时间都需要将它们设置为应用程序范围。这样,只会实例化一个对象实例,所有请求都将使用它。
对于未使用“请求”范围的所有用户共享的对象,应立即使其符合垃圾回收条件,而不是在用户会话到期之前闲逛。
这并不意味着收集器会立即运行,但是当收集完成后,它们将被删除。