commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From commons-...@jakarta.apache.org
Subject [jira] Commented: (JELLY-148) Huge memory leak resulting from the use of ThreadLocal
Date Mon, 20 Sep 2004 11:28:38 GMT
The following comment has been added to this issue:

     Author: Guido Anzuoni
    Created: Mon, 20 Sep 2004 4:28 AM
       Body:
If Tag could represent an "incarnated" TagScript wrt a JellyContext
than the various incarnations of the Script should be cached
int the context itself rather than in a ThreadLocal.
Adding a simple Map in JellyContext with TagScript as key
will solve all memory leaks with no impact.
Here follows the outline of changes.

JellyContext {

public Object getTagScriptData(TagScript t);
public void setTagScriptData(TagScript t, Object d);

};

TagScript {
...
public Tag getTag(JellyContext ctx) throws JellyException {
  TagScriptContextualData tscd = 
    (TagScriptContextualData) ctx.getTagScriptData(this);
  if (tscd == null) {
     tscd = new TagScriptContextualData();
     ctx.setTagScriptData(this, tscd);
  }
  Tag tag = tscd.getTag();
  if (tag == null) {
     tag = createTag();
     tag.setContext(ctx);

     tscd.setTag(tag);
  }
}// end of public Tag getTag()

...


public void run(JellyContext context, XMLOutput output) 
             throws JellyTagException {
        try {
            Tag tag = getTag(context);
            if ( tag == null ) {
                return;
            }

            if ( tag instanceof DynaTag ) {
.......
}// end of public void run()

};


Guido.



---------------------------------------------------------------------
View this comment:
  http://issues.apache.org/jira/browse/JELLY-148?page=comments#action_53235

---------------------------------------------------------------------
View the issue:
  http://issues.apache.org/jira/browse/JELLY-148

Here is an overview of the issue:
---------------------------------------------------------------------
        Key: JELLY-148
    Summary: Huge memory leak resulting from the use of ThreadLocal
       Type: Bug

     Status: Unassigned
   Priority: Critical

    Project: jelly
 Components: 
             core / taglib.core
   Versions:
             1.0-beta-5

   Assignee: 
   Reporter: Hans Gilde

    Created: Sat, 18 Sep 2004 9:34 PM
    Updated: Mon, 20 Sep 2004 4:28 AM

Description:
There is a huge memory leak that results from the TagScript's use of ThreadLocal.

ThreadLocal is usually used from a staic variable, while TagScript uses it from an instance
variable. Although this looks legal to me, it causes a huge memory leak.


---------------------------------------------------------------------
JIRA INFORMATION:
This message is automatically generated by JIRA.

If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa

If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


Mime
View raw message