[jira] [Updated] (LOG4J2-2269) Memory leaking of replacement parameters in case of enableThreadlocals=true

2018-03-11 Thread Dmitry Konstantinov (JIRA)

 [ 
https://issues.apache.org/jira/browse/LOG4J2-2269?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dmitry Konstantinov updated LOG4J2-2269:

Attachment: heap_dump_references.png

> 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
>Assignee: Remko Popma
>Priority: Major
> Attachments: heap_dump_references.png, 
> heap_dump_threadLocals_false.hprof.zip, 
> heap_dump_threadLocals_true.hprof.zip, test_to_reproduce.zip
>
>
> 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)


[jira] [Updated] (LOG4J2-2269) Memory leaking of replacement parameters in case of enableThreadlocals=true

2018-03-11 Thread Dmitry Konstantinov (JIRA)

 [ 
https://issues.apache.org/jira/browse/LOG4J2-2269?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dmitry Konstantinov updated LOG4J2-2269:

Attachment: heap_dump_threadLocals_true.hprof.zip
heap_dump_threadLocals_false.hprof.zip

> 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
>Assignee: Remko Popma
>Priority: Major
> Attachments: heap_dump_threadLocals_false.hprof.zip, 
> heap_dump_threadLocals_true.hprof.zip, test_to_reproduce.zip
>
>
> 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)


[jira] [Updated] (LOG4J2-2269) Memory leaking of replacement parameters in case of enableThreadlocals=true

2018-03-11 Thread Dmitry Konstantinov (JIRA)

 [ 
https://issues.apache.org/jira/browse/LOG4J2-2269?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dmitry Konstantinov updated LOG4J2-2269:

Attachment: test_to_reproduce.zip

> 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
>Assignee: Remko Popma
>Priority: Major
> Attachments: test_to_reproduce.zip
>
>
> 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)