[
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.