2012-03-19 27 views
0

我在JSF中持續面對這個基本疑問,您認爲在JSF中清理bean會有更好的性能影響嗎?在JSF中清理bean有什麼更好的表現?

一個)檢索豆,清除它,然後將它設置返回到上下文

FacesContext context = FacesContext.getCurrentInstance(); 

    Map<String, IFEContainer> advSSSuggestions = (Map<String,IFEContainer>) context.getELContext().getELResolver().getValue(context.getELContext(), null, "advSSSuggestions"); 

    advSSSuggestions.clear(); 

    FacesContext.getCurrentInstance().getELContext().getELResolver().setValue(context.getELContext(), null, "advSSSuggestions", advSSSuggestions); 

B)在上下文

context.getELContext().getELResolver().setValue(context.getELContext(), null, "advSSSuggestions", null); 

Ç直接設置爲bean空值)設置直接在上下文中豆的新對象

context.getELContext().getELResolver().setValue(context.getELContext(), null, "advSSSuggestions", new HashMap<String,IFEContainer>()); 
+0

在建議a)中回到上下文是完全沒有必要的。這不是PHP左右。至於你的具體問題,運行一個分析器。 – BalusC 2012-03-19 12:10:58

回答

0

我認爲是更好的變體a)清潔(喲你不需要使用..getElResolver()。setValue(..)導致它已經管理)。在會話被破壞後,會話的所有對象都將被銷燬/

b)在你將NULL放到會話之後,以前的Map對象不會同時被銷燬,你會從Map中刪除它。

c)每次將新對象(如果它是HashMap)在高負載系統的會話上下文中過於昂貴。