[ 
https://issues.apache.org/jira/browse/WW-4058?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13641889#comment-13641889
 ] 

Boris Morris commented on WW-4058:
----------------------------------

Tried with 2.3.15-SNAPSHOT (build on Thu Apr 25 13:48:32 UTC 2013 according to 
[this|https://repository.apache.org/content/groups/snapshots/org/apache/struts/struts2-core/)].
 Problem persists.
                
> ContainerHolder causes ThreadLocal memory leak
> ----------------------------------------------
>
>                 Key: WW-4058
>                 URL: https://issues.apache.org/jira/browse/WW-4058
>             Project: Struts 2
>          Issue Type: Bug
>          Components: Core Actions
>    Affects Versions: 2.3.14
>         Environment: Tomcat 7.0.39
> java version "1.7.0_15"
> OpenJDK Runtime Environment (IcedTea7 2.3.7) (7u15-2.3.7-0ubuntu1~12.04.1)
> OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)
>            Reporter: Boris Morris
>            Assignee: Lukasz Lenart
>             Fix For: 2.3.15
>
>         Attachments: hprof_2.png, hprof.png
>
>
> The localContext ThreadLocal is not cleaned up properly when stopping / 
> undeploying / redeploying a S2 application. This will in most cases cause the 
> web application ClassLoader not to be garbage collected, thus leaving a 
> redeployment memory leak.
> I am using Tomcat 7.0.39 and when I undeploy my application the following is 
> reported in the logs:
> {noformat}
> 2013-04-23 12:00:31,082 [request-worker-4] ERROR 
> org.apache.catalina.loader.WebappClassLoader- The web application [/dev] 
> created a ThreadLocal with key of type [java.lang.ThreadLocal] (value 
> [java.lang.ThreadLocal@7f2283e1]) and a value of type 
> [com.opensymphony.xwork2.inject.ContainerImpl] (value 
> [com.opensymphony.xwork2.inject.ContainerImpl@330069fc]) but failed to remove 
> it when the web application was stopped. Threads are going to be renewed over 
> time to try and avoid a probable memory leak.
> 2013-04-23 12:00:31,083 [request-worker-4] ERROR 
> org.apache.catalina.loader.WebappClassLoader- The web application [/dev] 
> created a ThreadLocal with key of type [java.lang.ThreadLocal] (value 
> [java.lang.ThreadLocal@7f2283e1]) and a value of type 
> [com.opensymphony.xwork2.inject.ContainerImpl] (value 
> [com.opensymphony.xwork2.inject.ContainerImpl@330069fc]) but failed to remove 
> it when the web application was stopped. Threads are going to be renewed over 
> time to try and avoid a probable memory leak.
> 2013-04-23 12:00:31,101 [request-worker-4] ERROR 
> org.apache.catalina.loader.WebappClassLoader- The web application [/dev] 
> created a ThreadLocal with key of type [java.lang.ThreadLocal] (value 
> [java.lang.ThreadLocal@7f2283e1]) and a value of type 
> [com.opensymphony.xwork2.inject.ContainerImpl] (value 
> [com.opensymphony.xwork2.inject.ContainerImpl@330069fc]) but failed to remove 
> it when the web application was stopped. Threads are going to be renewed over 
> time to try and avoid a probable memory leak.
> 2013-04-23 12:00:31,101 [request-worker-4] ERROR 
> org.apache.catalina.loader.WebappClassLoader- The web application [/dev] 
> created a ThreadLocal with key of type [java.lang.ThreadLocal] (value 
> [java.lang.ThreadLocal@7f2283e1]) and a value of type 
> [com.opensymphony.xwork2.inject.ContainerImpl] (value 
> [com.opensymphony.xwork2.inject.ContainerImpl@330069fc]) but failed to remove 
> it when the web application was stopped. Threads are going to be renewed over 
> time to try and avoid a probable memory leak.
> 2013-04-23 12:00:31,101 [request-worker-4] ERROR 
> org.apache.catalina.loader.WebappClassLoader- The web application [/dev] 
> created a ThreadLocal with key of type [java.lang.ThreadLocal] (value 
> [java.lang.ThreadLocal@7f2283e1]) and a value of type 
> [com.opensymphony.xwork2.inject.ContainerImpl] (value 
> [com.opensymphony.xwork2.inject.ContainerImpl@330069fc]) but failed to remove 
> it when the web application was stopped. Threads are going to be renewed over 
> time to try and avoid a probable memory leak.
> 2013-04-23 12:00:31,101 [request-worker-4] ERROR 
> org.apache.catalina.loader.WebappClassLoader- The web application [/dev] 
> created a ThreadLocal with key of type [java.lang.ThreadLocal] (value 
> [java.lang.ThreadLocal@7f2283e1]) and a value of type 
> [com.opensymphony.xwork2.inject.ContainerImpl] (value 
> [com.opensymphony.xwork2.inject.ContainerImpl@330069fc]) but failed to remove 
> it when the web application was stopped. Threads are going to be renewed over 
> time to try and avoid a probable memory leak.
> 2013-04-23 12:00:31,102 [request-worker-4] ERROR 
> org.apache.catalina.loader.WebappClassLoader- The web application [/dev] 
> created a ThreadLocal with key of type [java.lang.ThreadLocal] (value 
> [java.lang.ThreadLocal@7f2283e1]) and a value of type 
> [com.opensymphony.xwork2.inject.ContainerImpl] (value 
> [com.opensymphony.xwork2.inject.ContainerImpl@330069fc]) but failed to remove 
> it when the web application was stopped. Threads are going to be renewed over 
> time to try and avoid a probable memory leak.
> 2013-04-23 12:00:31,102 [request-worker-4] ERROR 
> org.apache.catalina.loader.WebappClassLoader- The web application [/dev] 
> created a ThreadLocal with key of type [java.lang.ThreadLocal] (value 
> [java.lang.ThreadLocal@7f2283e1]) and a value of type 
> [com.opensymphony.xwork2.inject.ContainerImpl] (value 
> [com.opensymphony.xwork2.inject.ContainerImpl@330069fc]) but failed to remove 
> it when the web application was stopped. Threads are going to be renewed over 
> time to try and avoid a probable memory leak.
> 2013-04-23 12:00:31,103 [request-worker-4] ERROR 
> org.apache.catalina.loader.WebappClassLoader- The web application [/dev] 
> created a ThreadLocal with key of type [java.lang.ThreadLocal] (value 
> [java.lang.ThreadLocal@7f2283e1]) and a value of type 
> [com.opensymphony.xwork2.inject.ContainerImpl] (value 
> [com.opensymphony.xwork2.inject.ContainerImpl@330069fc]) but failed to remove 
> it when the web application was stopped. Threads are going to be renewed over 
> time to try and avoid a probable memory leak.
> 2013-04-23 12:00:31,103 [request-worker-4] ERROR 
> org.apache.catalina.loader.WebappClassLoader- The web application [/dev] 
> created a ThreadLocal with key of type [java.lang.ThreadLocal] (value 
> [java.lang.ThreadLocal@7f2283e1]) and a value of type 
> [com.opensymphony.xwork2.inject.ContainerImpl] (value 
> [com.opensymphony.xwork2.inject.ContainerImpl@330069fc]) but failed to remove 
> it when the web application was stopped. Threads are going to be renewed over 
> time to try and avoid a probable memory leak.
> 2013-04-23 12:00:31,103 [request-worker-4] ERROR 
> org.apache.catalina.loader.WebappClassLoader- The web application [/dev] 
> created a ThreadLocal with key of type [java.lang.ThreadLocal] (value 
> [java.lang.ThreadLocal@7f2283e1]) and a value of type 
> [com.opensymphony.xwork2.inject.ContainerImpl] (value 
> [com.opensymphony.xwork2.inject.ContainerImpl@330069fc]) but failed to remove 
> it when the web application was stopped. Threads are going to be renewed over 
> time to try and avoid a probable memory leak.
> 2013-04-23 12:00:31,103 [request-worker-4] ERROR 
> org.apache.catalina.loader.WebappClassLoader- The web application [/dev] 
> created a ThreadLocal with key of type [java.lang.ThreadLocal] (value 
> [java.lang.ThreadLocal@7f2283e1]) and a value of type 
> [com.opensymphony.xwork2.inject.ContainerImpl] (value 
> [com.opensymphony.xwork2.inject.ContainerImpl@330069fc]) but failed to remove 
> it when the web application was stopped. Threads are going to be renewed over 
> time to try and avoid a probable memory leak.
> {noformat}
> After poking around in the heap dump it would seem that Tomcat is correct. 
> There is indeed a GC root at the ThreadLocal used by the ContainerImpl.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to