通过将系统属性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然后,我将最大堆大小增加到4G(总物理内存为8G),并引发了另一个问题:
SEVERE: Exception processing: 775221 org.apache.logging.log4j.core.async.RingBufferLogEvent@1c6b80a9
java.lang.OutOfMemoryError: GC overhead limit exceeded发布于 2013-10-01 23:11:43
Log4J团队知道这一点:https://issues.apache.org/jira/browse/LOG4J2-414
更新2018-2-2:
最初的问题和上面的JIRA罚单是在5年前针对Log4j 2.0-beta9 9提出的。
这是很多年后的事了。Log4j2社区即将发布Log4j 2.11。自2.0-beta 9版本以来,已经修复了几个内存泄漏错误。
如果有人在最近版本的Log4j2中遇到这个问题,请提出一个新的JIRA票据,因为这是不应该发生的。
https://stackoverflow.com/questions/19104190
复制相似问题