由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