【发布时间】:2013-02-22 07:28:36
【问题描述】:
@RequestScoped 和 @SessionScopedBean 的生命周期 托管 bean 由 Servlet 容器本身管理,因为它们基本上分别存储为 HttpRequest 和 HttpSession 的属性。 JSF 如何管理 @ViewScopedBean 的生命周期?我知道它是在创建视图时创建的,并且在回发到另一个视图之前一直可用。但我发现,在我们从那个视图移开后,它并没有立即收集垃圾。
【问题讨论】:
-
一旦托管 bean 操作方法返回一个有效的导航案例结果,即使它是针对同一个视图,视图范围的托管 bean 也会被丢弃并重新创建。阅读此balusc.blogspot.co.il/2011/09/communication-in-jsf-20.html,这是他们存储的位置:stackoverflow.com/a/9177769/617373
-
嗯,实际上,您不应该能够预测 gc 或让它立即发生,是吗?但关于 mojarra 中的 viewscoped beans,请参阅 stackoverflow.com/a/13097208/1530938
-
垃圾收集是异步的。当视图范围被“销毁”时,它实际上只是“标记为准备好被垃圾收集”,就像所有其他 java 对象一样。注意:标记实际上是 0 的引用计数(即标记为“不再使用”)。
标签: jsf jsf-2 managed-bean destroy view-scope