[
https://issues.apache.org/jira/browse/LOG4J2-1683?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Remko Popma resolved LOG4J2-1683.
---------------------------------
Resolution: Fixed
Fix Version/s: 2.8
Implemented in commits c136d0d, 8ec4785, ac65f18, 2dfe3e3 and f4525d8.
> (GC) Avoid allocating temporary objects in MapMessage
> -----------------------------------------------------
>
> Key: LOG4J2-1683
> URL: https://issues.apache.org/jira/browse/LOG4J2-1683
> Project: Log4j 2
> Issue Type: Improvement
> Components: API
> Affects Versions: 2.7
> Reporter: Remko Popma
> Assignee: Remko Popma
> Fix For: 2.8
>
>
> Make MapMessage garbage-free.
> While working on LOG4J2-1677, I found that MapFilter itself can avoid
> allocating temporary objects, but when filtering a MapMessage, the message
> allocates a java/util/Collections$UnmodifiableMap:
> {code}
> at java.util.Collections.unmodifiableMap(Collections.java:1318)
> at
> org.apache.logging.log4j.message.MapMessage.getData(MapMessage.java:102)
> at
> org.apache.logging.log4j.core.filter.MapFilter.filter(MapFilter.java:70)
> {code}
> Apart from the filtering, logging a MapMessage allocates a StringBuilder and
> an iterator over the TreeMap:
> {code}
> at java.lang.StringBuilder.<init>(StringBuilder.java:85)
> at
> org.apache.logging.log4j.message.MapMessage.asString(MapMessage.java:189)
> at
> org.apache.logging.log4j.message.MapMessage.asString(MapMessage.java:172)
> at
> org.apache.logging.log4j.message.MapMessage.getFormattedMessage(MapMessage.java:229)
> at
> org.apache.logging.log4j.core.async.RingBufferLogEvent.setMessage(RingBufferLogEvent.java:127)
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]