[
https://issues.apache.org/jira/browse/LOG4J2-2533?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Carter Kozak updated LOG4J2-2533:
---------------------------------
Description:
Reported here: [https://github.com/apache/logging-log4j2/pull/251]
{noformat}
Stack Trace TLABs Total TLAB Size(bytes) Pressure(%)
java.lang.ThreadLocal$ThreadLocalMap.set(ThreadLocal, Object) line: 481 10
3,638,864 56.192
java.lang.ThreadLocal$ThreadLocalMap.access$100(ThreadLocal$ThreadLocalMap,
ThreadLocal, Object) line: 298 10 3,638,864 56.192
java.lang.ThreadLocal.setInitialValue() line: 184 10 3,638,864 56.192
java.lang.ThreadLocal.get() line: 170 10 3,638,864 56.192
org.apache.logging.log4j.core.async.AsyncLoggerConfig.log(LogEvent,
LoggerConfig$LoggerConfigPredicate) line: 91 10 3,638,864 56.192{noformat}
We clear and re-set a threadlocal value, which plays with the internal
thread-map size like an accordion, increasing probability unused thread entries
will be removed. By setting back to a default value rather than clearing the
threadlocal we can avoid allocation.
was:
Reported here: [https://github.com/apache/logging-log4j2/pull/251]
{noformat}
Stack Trace TLABs Total TLAB Size(bytes) Pressure(%)
java.lang.ThreadLocal$ThreadLocalMap.set(ThreadLocal, Object) line: 481 10
3,638,864 56.192
java.lang.ThreadLocal$ThreadLocalMap.access$100(ThreadLocal$ThreadLocalMap,
ThreadLocal, Object) line: 298 10 3,638,864 56.192
java.lang.ThreadLocal.setInitialValue() line: 184 10 3,638,864 56.192
java.lang.ThreadLocal.get() line: 170 10 3,638,864 56.192
org.apache.logging.log4j.core.async.AsyncLoggerConfig.log(LogEvent,
LoggerConfig$LoggerConfigPredicate) line: 91 10 3,638,864 56.192{noformat}
> Garbage creation introduced by LOG4J2-2301
> ------------------------------------------
>
> Key: LOG4J2-2533
> URL: https://issues.apache.org/jira/browse/LOG4J2-2533
> Project: Log4j 2
> Issue Type: Improvement
> Components: Core
> Affects Versions: 2.11.1
> Reporter: Carter Kozak
> Assignee: Carter Kozak
> Priority: Major
> Fix For: 3.0.0, 2.11.2
>
>
> Reported here: [https://github.com/apache/logging-log4j2/pull/251]
> {noformat}
> Stack Trace TLABs Total TLAB Size(bytes) Pressure(%)
> java.lang.ThreadLocal$ThreadLocalMap.set(ThreadLocal, Object) line: 481 10
> 3,638,864 56.192
> java.lang.ThreadLocal$ThreadLocalMap.access$100(ThreadLocal$ThreadLocalMap,
> ThreadLocal, Object) line: 298 10 3,638,864 56.192
> java.lang.ThreadLocal.setInitialValue() line: 184 10 3,638,864 56.192
> java.lang.ThreadLocal.get() line: 170 10 3,638,864 56.192
> org.apache.logging.log4j.core.async.AsyncLoggerConfig.log(LogEvent,
> LoggerConfig$LoggerConfigPredicate) line: 91 10 3,638,864 56.192{noformat}
> We clear and re-set a threadlocal value, which plays with the internal
> thread-map size like an accordion, increasing probability unused thread
> entries will be removed. By setting back to a default value rather than
> clearing the threadlocal we can avoid allocation.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)