[
https://issues.jboss.org/browse/RF-3878?page=com.atlassian.jira.plugin.sy...
]
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