[
https://issues.apache.org/jira/browse/LOG4J2-1142?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14942486#comment-14942486
]
Remko Popma commented on LOG4J2-1142:
-------------------------------------
Based on this I would like to keep the ThreadLocal, but fix the code as
indicated
[above|https://issues.apache.org/jira/browse/LOG4J2-1142?focusedCommentId=14940632&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14940632]
to eliminate the potential memory leak.
If there are still concerns with using a ThreadLocal in web containers, we
could use the Strategy design pattern here and wrap this in a
StringBuilderProvider interface with multiple implementations: ThreadLocal,
ObjectPool and new instance. The web module could then avoid the ThreadLocal.
> ThreadLocals in Layout implementations should be non-static to prevent memory
> leaks in web containers
> -----------------------------------------------------------------------------------------------------
>
> Key: LOG4J2-1142
> URL: https://issues.apache.org/jira/browse/LOG4J2-1142
> Project: Log4j 2
> Issue Type: Improvement
> Components: Layouts
> Affects Versions: 2.4
> Reporter: Dmitri Blinov
> Assignee: Remko Popma
> Fix For: 2.4.1
>
> Attachments: LOG4J2-1142.patch
>
>
> As discussed in LOG4J2-1125, storing ThreadLocal<StringBuilder> in a static
> field may not interact well with the thread pools and class loaders of some
> web containers and may result in memory leaks, especially in older web
> containers.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]