Memory leak when app stopped
----------------------------

                 Key: WW-2167
                 URL: https://issues.apache.org/struts/browse/WW-2167
             Project: Struts 2
          Issue Type: Bug
    Affects Versions: 2.0.9
            Reporter: Adam Crume


Struts 2 somehow prevents the app's classes from being garbage collected when 
the application is stopped or undeployed.

I created a barebones Struts 2 app with an action with the following code:
        private static final Object x = new Object() {
                {
                        System.out.println("================== Object created: 
" + hashCode() + " ===================");
                }


                protected void finalize() throws Throwable {
                        System.out.println("**************** Object finalized: 
" + hashCode() + " *********************");
                };
        };

Because of this static field, a message should be printed when the class is 
initialized and when it is garbage collected.  "Object created" would be 
printed out whenever I went to the action for the first time, but restarting 
the app never printed "Object finalized."  This is not an issue with garbage 
collection in my web container because doing the same thing with a servlet 
resulted in both messages being printed.

One problem is that the FilterDispatcher.init() method sets a ThreadLocal but 
never clears it.  I fixed that by adding ActionContext.setContext(null); to the 
end of the init() method, but that didn't solve the larger problem.


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to