[ https://issues.apache.org/struts/browse/WW-2167?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Adam Crume updated WW-2167: --------------------------- Environment: WebSphere 6.1.0.9 (non-network deploy) on Windows XP Professional java version "1.5.0" Java(TM) 2 Runtime Environment, Standard Edition (build pwi32devifx-20070608 (SR5+IY99712)) IBM J9 VM (build 2.3, J2RE 1.5.0 IBM J9 2.3 Windows XP x86-32 j9vmwi3223-20070426 (JIT enabled) J9VM - 20070420_12448_lHdSMR JIT - 20070419_1806_r8 GC - 200704_19) JCL - 20070608 > 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 > Environment: WebSphere 6.1.0.9 (non-network deploy) on Windows XP > Professional > java version "1.5.0" > Java(TM) 2 Runtime Environment, Standard Edition (build pwi32devifx-20070608 > (SR5+IY99712)) > IBM J9 VM (build 2.3, J2RE 1.5.0 IBM J9 2.3 Windows XP x86-32 > j9vmwi3223-20070426 (JIT enabled) > J9VM - 20070420_12448_lHdSMR > JIT - 20070419_1806_r8 > GC - 200704_19) > JCL - 20070608 > 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.