You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rp...@apache.org on 2013/10/15 19:07:22 UTC

svn commit: r1532438 - in /logging/log4j/log4j2/trunk: log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java src/changes/changes.xml

Author: rpopma
Date: Tue Oct 15 17:07:22 2013
New Revision: 1532438

URL: http://svn.apache.org/r1532438
Log:
LOG4J-323 memory leak fix for AsyncLogger

Modified:
    logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java
    logging/log4j/log4j2/trunk/src/changes/changes.xml

Modified: logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java?rev=1532438&r1=1532437&r2=1532438&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java (original)
+++ logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java Tue Oct 15 17:07:22 2013
@@ -83,7 +83,7 @@ public class AsyncLogger extends Logger 
 
     private static ExecutorService executor = Executors
             .newSingleThreadExecutor(new DaemonThreadFactory("AsyncLogger-"));
-    private final ThreadLocal<Info> threadlocalInfo = new ThreadLocal<Info>();
+    private static ThreadLocal<Info> threadlocalInfo = new ThreadLocal<Info>();
 
     static {
         final int ringBufferSize = calculateRingBufferSize();
@@ -262,5 +262,6 @@ public class AsyncLogger extends Logger 
             }
         }
         executor.shutdown(); // finally, kill the processor thread
+        threadlocalInfo = new ThreadLocal<Info>(); // LOG4J2-323
     }
 }

Modified: logging/log4j/log4j2/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/src/changes/changes.xml?rev=1532438&r1=1532437&r2=1532438&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/src/changes/changes.xml (original)
+++ logging/log4j/log4j2/trunk/src/changes/changes.xml Tue Oct 15 17:07:22 2013
@@ -21,6 +21,10 @@
   </properties>
   <body>
     <release version="2.0RC1" date="2013-MM-DD" description="Bug fixes and enhancements">
+      <action issue="LOG4J2-323" dev="rpopma" type="fix">
+        Resolved memory leak by releasing reference to ThreadLocal when 
+        AsyncLogger is stopped.
+      </action>
       <action issue="LOG4J2-425" dev="rpopma" type="fix">
         Resolved memory leak by populating AsyncLoggerConfigHelper ring buffer 
         via EventTranslatorTwoArg, eliminating the need for a ThreadLocal.