DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG�
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=33934>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND�
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=33934

           Summary: [standard] memory leak in jstl c:set tag
           Product: Taglibs
           Version: 1.0.6
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: critical
          Priority: P2
         Component: Standard Taglib
        AssignedTo: [email protected]
        ReportedBy: [EMAIL PROTECTED]


<c:set ..> does not clear its target/value fields after usage, it keeps
references to these objects when the application server places the tag instance
back into a tag pool.

Example: I have a session attribute named hugeBean and set a property of that
bean with <c:set target="${hugeBean}" ... />. In doStartTag() the EL ${hugeBean}
is evaluated and the result is placed into the field "target" - see
org.apache.taglibs.standard.tag.el.core.SetTag and
org.apache.taglibs.standard.tag.common.core.SetSupport. In doEndTag() the
property of hugeBean is changed, but the field "target" in SetSupport is not
cleared afterwards. After calling doEndTag() the application server may (and
tomcat does) put the tag into a tag pool for recycling - release() is not called
before this (which is correct I think). Now the tag pool contains the SetTag
instance that still contains a reference to the hugeBean. If the application
removes hugeBean from the session, it can not be garbage collected because of
the reference from the tag pool.

The fix should be not too difficult, I think doEndTag() should clear all
references to appliaction objects.

-- 
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to