Log4j2.0异步记录器导致OutOfMemory Java堆空间

我通过设置系统来配置我公司的系统以使所有记录器都是异步的

 属性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

最佳答案 Log4J团队意识到这一点:
https://issues.apache.org/jira/browse/LOG4J2-414

更新2018-2-2:

最初的问题和上面的JIRA票是5年前针对Log4j 2.0-beta9提出的.

多年以后. Log4j2社区即将发布Log4j 2.11.自版本2.0-beta 9以来,已修复了几个内存泄漏错误.

如果有人遇到这个问题与最新版本的Log4j2,请提出一个新的JIRA票,因为这不应该发生.

点赞