我通过设置系统来配置我公司的系统以使所有记录器都是异步的
属性Log4jContextSelector
到org.apache.logging.log4j.core.async.AsyncLoggerContextSelector
。我们使用log4j 2.0。
当我通过系统运行一个小输入文件时没有问题。但是当我运行一个更大的输入文件(我们的系统应该运行比这更大的文件)时,会导致OutOfMemoryError
。信息如下:
SEVERE: Exception processing: 14451294 org.apache.logging.log4j.core.async.RingB ufferLogEvent@226dc6bf
java.lang.OutOfMemoryError: Java heap space
然后我将最大堆大小增加到4 gigs(总物理内存为8G)并导致另一个问题:
SEVERE: Exception processing: 775221 org.apache.logging.log4j.core.async.RingBufferLogEvent@1c6b80a9
java.lang.OutOfMemoryError: GC overhead limit exceeded
答案 0 :(得分:2)
Log4J团队意识到这一点:https://issues.apache.org/jira/browse/LOG4J2-414
更新2018-2-2:
5年前针对Log4j 2.0-beta9提出了原始问题和上述JIRA机票。
这是多年以后的事了。 Log4j2社区即将发布Log4j 2.11。自版本2.0-beta 9以来,已修复了几个内存泄漏错误。
如果有人在使用最新版本的Log4j2时遇到此问题,请提出新的JIRA票证,因为这不应该发生。