2012-03-19 45 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)在高负载系统的会话上下文中过于昂贵。