https://issues.apache.org/bugzilla/show_bug.cgi?id=50661
Summary: c:forEach tag doesn't release his list - it causes
temporary memory leak
Product: Taglibs
Version: unspecified
Platform: All
OS/Version: All
Status: NEW
Severity: normal
Priority: P2
Component: Standard Taglib
AssignedTo: [email protected]
ReportedBy: [email protected]
Sorry for my English.
In <c:forEach> implementation, there are two internal variables: rawItems and
items. They hold a list, which is iterated with <c:forEach> statement. The
problem is, that after the iteration has finished, the variables still hold the
list! It would not be a problem if the Tag would be released after request
ends. But IT IS a problem because the Tag (according to JSP specification)
remains in memory and can be reused later by another request.
So, it is possible, that the list which is held by rawItems, remains in memory
many hours until another request releases it. If there ist a VERY BIG LIST with
VERY BIG OBJECTS, it could be a VERY BIG PROBLEM with memory on JVM. And it was
- on my server.
I did a workaround of this. I made a class which extendeds ForEachTag and I
wrote such method:
@Override
public int doEndTag() throws JspException
{
int wynik = super.doEndTag();
this.rawItems = null ;
this.items = null ;
return wynik ;
}
Now I use my own forEach tag.
I think, such "memory optimalization" should be made in a standard
implementation.
Sergiusz
--
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]