由Servlet容器自身管理,因为它们是基本上为HttpRequest
和HttpSession
属性分别存储在@RequestScoped
和@SessionScopedBean
管理豆的生命周期。 JSF如何管理@ViewScopedBean
的生命周期?我知道它是在创建视图时创建的,并且可以使用,直到有回发到不同的视图。但是我发现,在我们从这个观点出发后,并不是立即收集垃圾。如何以及何时在JSF中销毁@ViewScoped bean?
回答
当已经执行
具有非
null
结果回发它就会被破坏,,或者在会话(逻辑)视图的数目已经超过与该特定视图是LRU链中的第一个(在Mojarra中,可由
com.sun.faces.numberOfViewsInSession
和com.sun.faces.numberOfLogicalViews
上下文参数配置,每个默认值为15),或nu在会话中有很多actieve视图范围已经超出(在Mojarra,这是一个硬编码限制25),另请参见JSF 2.2 Memory Consumption: Why does Mojarra keep the ViewScoped Beans of the last 25 Views in Memory?
或者,会话已过期。
它将因此不被当页面被卸载,只需点击某个链接GET到另一个页面,或刷新页面,或者关闭浏览器标签/窗口的结果破坏。豆子会一直存在,直到满足一种高度的条件。无论如何要在卸载时销毁它,请考虑使用OmniFaces @ViewScoped
。
你是什么意思的LRU?最近最少使用?还有你的意思是什么?逻辑*视图? – Geek 2013-03-13 17:15:48
1)是的。它们存储在一个LRU地图中,按照上次使用的顺序排列。最近最少使用的是第一个条目。 2)请参阅http://stackoverflow.com/questions/12562469/how-can-i-set-the-view-timeout/12564632#12564632 – BalusC 2013-03-13 17:18:01
@BalusC,有没有任何解决方案去糟糕的豆离子更快?将底层viewscoped注释帮助吗? – 2014-09-27 10:04:22
- 1. JSF 2.0 ViewScoped Bean何时死亡?
- 2. 与ViewScoped豆JSF注销
- 3. JSF 2 - 如何销毁会话范围的bean
- 4. 有状态会话Bean何时销毁?
- 5. 如何触发销毁viewcoped bean?
- 6. 如何在spring bean中实现@viewscoped
- 7. 如何在注销时销毁活动?
- 8. 如何在数据呈现在jsf页面后销毁会话
- 9. JSF - 在ViewScoped bean中使用paginator时传递f:param
- 10. JSF ViewScoped OutOfMemoryException
- 11. JSF 2.2 ViewScoped Bean被创建多次
- 12. 从Servlet访问JSF ViewScoped托管bean
- 13. 无法启动JSF @ViewScoped @Stateless bean
- 14. 如何(以及何时?)删除JSF 2.0中的Session范围的bean
- 15. 如何在会话销毁后使用viewscoped beans/viewmap(使用客户端保存)?
- 16. Arquillian测试在ViewScoped中bean失败时
- 17. 如何销毁tinyMce?
- 18. 如何销毁ICONINFO?
- 19. 如何销毁cookie
- 20. 如何销毁SKPhysicsBody?
- 21. 如何销毁NSHTTPCookies?
- 22. 父母被销毁时如何销毁子对象?
- 23. 如何销毁在TabActivity
- 24. 在JSF 2.0中使用@ViewScoped?
- 25. 注入的EJB引用丢失在ViewScoped JSF Bean中
- 26. 如何在Java 5中将JSF bean注入另一个JSF bean?
- 27. 如何从Servlets访问@ViewScoped托管bean?
- 28. 何时致电YUI销毁?
- 29. 何时销毁对象?
- 30. 何时在JSF中使用Serializable backing bean?
一旦托管bean操作方法返回有效的导航案例结果,即使它是相同的视图,视图作用域托管bean也将被重新创建并重新创建。阅读这个http://balusc.blogspot.co.il/2011/09/communication-in-jsf-20.html,这是他们存储的地方:http://stackoverflow.com/a/9177769/617373 – Daniel 2013-03-07 07:33:00
那么,在现实中,你不应该能够预测gc或让它立即发生吗?但是关于mojarra中的viewscoped beans,请参阅http://stackoverflow.com/a/13097208/1530938 – kolossus 2013-03-07 12:15:28
垃圾回收是异步的。当视图范围被“销毁”时,它就像所有其他Java对象一样,只是“标记为准备垃圾收集”。注意:标记实际上是0的参考计数(即标记为“不再使用”)。 – DwB 2013-03-13 16:54:34