[ https://issues.apache.org/jira/browse/LOG4J2-1297?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15159142#comment-15159142 ]
Remko Popma commented on LOG4J2-1297: ------------------------------------- Making all Loggers asynchronous means all LogEvents are pre-allocated in the Disruptor ring buffer. Otherwise we would need to figure out how to reuse LogEvents. (Probably doable, but maybe later... :-) ) If there is a properties section, that map is merged into the ThreadContextMap, creating a new HashMap for each event (LOG4J2-1282). If users use non-gc-free components it will all still work like it currently does, but temporary objects are created and logging will contribute to GC pressure (basically it will be more similar to log4j-2.5). > Document "gc-free" configuration and performance > ------------------------------------------------ > > Key: LOG4J2-1297 > URL: https://issues.apache.org/jira/browse/LOG4J2-1297 > Project: Log4j 2 > Issue Type: New Feature > Components: Documentation > Affects Versions: 2.5 > Reporter: Remko Popma > Assignee: Remko Popma > > Update the site with a description of which configurations are GC-free (i.e., > that don't create temporary objects in steady running state). > Currently that means > * Loggers are all asynchronous (Log4jContextSelector is set to > org.apache.logging.log4j.core.async.AsyncLoggerContextSelector) > * the configuration does not contain a <Properties> section > * the "steady-state" appenders are either RandomAccessFile or > RollingRandomAccessFile Appenders (logging to any other appender will cause > temporary objects to be created - including ConsoleAppender) > * the Layout is a PatternLayout that uses one of the pre-defined date > formats, does not have any regular expression replacements, and does not have > lookups (TODO: may need to restrict this further) > * in user code, when logging a parameterized message, the number of > parameters is no more than ... (TBD pending discussion in LOG4J2-1278) > * in user code, when logging a parameterized message, parameters of primitive > type are boxed in a reused StringBuilder (Log4j provides a utility to make > this relatively painless) > Furthermore, we need to explain that some of this functionality depends on > ThreadLocals and so is disabled by default in web applications to prevent > memory leaks. The page should also explain how to manually switch off the use > of ThreadLocals. > Finally, the page should show a performance test comparison similar to the > [performance > section|http://logging.apache.org/log4j/2.x/manual/async.html#Performance] on > the Async Loggers page. I'm thinking a comparison between Logback, Log4j-1, > Log4j-2.0, Log4j-2.6 "classic" and Log4j-2.6 "gc-free" would be ideal. -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org For additional commands, e-mail: log4j-dev-h...@logging.apache.org