[ https://issues.apache.org/jira/browse/LOG4J2-2806?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17058854#comment-17058854 ]
Grzegorz Grzybek commented on LOG4J2-2806: ------------------------------------------ Only after storing the loggers in WeakReferences inside WeakHashMap inside LoggerRegistry, I had proper garbage collection... > Strange usage of WeakMapFactory in LoggerRegistry > ------------------------------------------------- > > Key: LOG4J2-2806 > URL: https://issues.apache.org/jira/browse/LOG4J2-2806 > Project: Log4j 2 > Issue Type: Task > Reporter: Grzegorz Grzybek > Priority: Major > > I'm working on https://ops4j1.jira.com/browse/PAXLOGGING-311 and I'm checking > some (maybe a bit artificial) scenario where I create millions of unique > loggers. > For this purpose, I've changed > {{org.apache.logging.log4j.core.LoggerContext#loggerRegistry}} from: > {code:java} > private final LoggerRegistry<Logger> loggerRegistry = new LoggerRegistry<>(); > {code} > to: > {code:java} > private final LoggerRegistry<Logger> loggerRegistry = new > LoggerRegistry<>(new LoggerRegistry.WeakMapFactory<>()); > {code} > The problem is that this didn't help. the _inner_ map (from logger name to > instance of {{org.apache.logging.log4j.core.Logger}}) was proper > {{WeakHashMap}}, but they weak key (logger name) is still strongly referenced > from the value itself. > {{WeakHashMap}} Javadoc says: > bq. The value objects in a WeakHashMap are held by ordinary strong > references. Thus care should be taken to ensure that value objects do not > strongly refer to their own keys, either directly or indirectly, since that > will prevent the keys from being discarded. > I know {{LoggerRegistry.WeakMapFactory}} is used by > {{org.apache.logging.log4j.taglib.Log4jTaglibLoggerContext}}, but does it > work? -- This message was sent by Atlassian Jira (v8.3.4#803005)