[
https://issues.apache.org/struts/browse/WW-2167?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
James Holmes updated WW-2167:
-----------------------------
Fix Version/s: 2.0.11
Can you give us more information about your environment? Which app server?
Whick JDK? Which OS?
> 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
> Fix For: 2.0.11
>
>
> 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.