Dmitry Konstantinov created LOG4J2-2269:
-------------------------------------------

             Summary: Memory leaking of replacement parameters in case of 
enableThreadlocals=true
                 Key: LOG4J2-2269
                 URL: https://issues.apache.org/jira/browse/LOG4J2-2269
             Project: Log4j 2
          Issue Type: Bug
          Components: Core
            Reporter: Dmitry Konstantinov


Use case:
1) I have a thread pool with quite large number of threads (around 100)
2) Threads from the pool sometimes process some heavy objects. Threads are not 
actively writing into logs (so, a thread may process a task and does not log 
any message).
3) As a part of processing for some objects in some non-frequently used branch 
a thread logged a message with heavy replacement parameters (parameterized log 
message is used).

In this case such heavy replacement parameters are not garbage collected until 
another message will not written within the same thread because thread-local 
ReusableParameterizedMessage and MutableLogEvent objects keep references to the 
replacement parameters.


Is it possible to cleanup such references when a message is released (for 
example as a part of 
org.apache.logging.log4j.message.ReusableMessageFactory#release and 
org.apache.logging.log4j.core.impl.ReusableLogEventFactory#release) to avoid 
such kind of leaks?



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to