[ 
https://issues.jboss.org/browse/RF-3878?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12825330#comment-12825330
 ] 

Patrick Decat commented on RF-3878:
-----------------------------------

Reading the RichFaces 3.3 source code, I noticed it adds 1 to both 
numberOfLogicalViews and numberOfViewsInSession parameters:
{code:title=https://source.jboss.org/browse/RichFaces/tags/3.3.4.Final/framework/impl/src/main/java-jsf12/org/ajax4jsf/application/AjaxStateHolder.java?hb=true#to86}
 86                                         instance = new 
AjaxStateHolder(numbersOfViewsInSession,
 87                                                         
numbersOfLogicalViews);
{code}
and:
{code:title=https://source.jboss.org/browse/RichFaces/tags/3.3.4.Final/framework/impl/src/main/java-jsf12/org/ajax4jsf/application/AjaxStateHolder.java?hb=true#to53}
 52         private AjaxStateHolder(int capacity, int numberOfViews) {
 53                 views = new LRUMap<String, LRUMap<String, 
StateReference>>(capacity+1);
 54                 this.numberOfViews = numberOfViews;
 55         }
{code}
and:
{code:title=https://source.jboss.org/browse/RichFaces/tags/3.3.4.Final/framework/impl/src/main/java-jsf12/org/ajax4jsf/application/AjaxStateHolder.java?hb=true#to173}
171                                         // TODO - make size parameter 
configurable
172                                         viewVersions = new LRUMap<String, 
StateReference>(
173                                                         
this.numberOfViews+1);
174                                         views.put(viewId, viewVersions);
{code}

Therefore, I went one step further down and set both values to zero, 
effectively reaching a single view state:
{code}
  <context-param>
    <param-name>com.sun.faces.numberOfLogicalViews</param-name>
    <param-value>0</param-value>
  </context-param>
  <context-param>
    <param-name>com.sun.faces.numberOfViewsInSession</param-name>
    <param-value>0</param-value>
  </context-param>
{code}


That definitively breaks the back button support, but it saves lots of 
megabytes for us, dividing by 4 the peak per session memory usage...
                
> Session memory leak
> -------------------
>
>                 Key: RF-3878
>                 URL: https://issues.jboss.org/browse/RF-3878
>             Project: RichFaces
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>    Affects Versions: 3.2.0.SR1
>            Reporter: Dmitri Voronov
>            Assignee: Nick Belaevski
>             Fix For: 3.3.0
>
>
> AjaxStateHolder saves all views in the session. But the same view can occur 
> several times in this "cache"; the views from this "cache" are not reused and 
> just fill the session. If an application has many large views and deals with 
> many concurrent sessions, the heap can easily grow up to Gigabytes(!)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
_______________________________________________
richfaces-issues mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/richfaces-issues

Reply via email to