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: [email protected]
For additional commands, e-mail: [email protected]