Costa Theodosiou created LOG4J2-819:
---------------------------------------

             Summary: PermGen OutOfMemoryError when reloading webapp on Tomcat 6
                 Key: LOG4J2-819
                 URL: https://issues.apache.org/jira/browse/LOG4J2-819
             Project: Log4j 2
          Issue Type: Bug
          Components: Core
    Affects Versions: 2.0.2
         Environment: Tomcat 6
            Reporter: Costa Theodosiou
            Priority: Critical


When reloading an application 3 or 4 times in Tomcat 6, the application crashes 
with a "java.lang.OutOfMemoryError: PermGen space" exception.

After some investigation using the "When all else fails" section of 
https://wiki.apache.org/tomcat/OutOfMemory in conjunction with Java VisualVM, I 
have narrowed down the problem to the Thread created within 
org.apache.logging.log4j.core.util.CoarseCachedClock.

When a Thread is created, it contains a reference to the classloader that it 
was created with. In this case, the Thread's contextClassLoader field contains 
a reference to the WebappClassLoader. When Tomcat attempts to unload the 
webapp, the Thread still holds onto this reference which prevents 
WebappClassLoader from being freed.

Perhaps the Log4jServletContextListener (Log4jWebInitializerImpl) can be made 
to stop the CoarseCachedClock thread.

I believe this is not an obvious issue on Tomcat 7 due to 
https://wiki.apache.org/tomcat/MemoryLeakProtection.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org
For additional commands, e-mail: log4j-dev-h...@logging.apache.org

Reply via email to