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

标签 java asynchronous logging out-of-memory log4j2

我通过设置系统将我公司的系统配置为让所有记录器异步 属性 Log4jContextSelectororg.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 票证,因为这不应该发生。

关于java - Log4j2.0 异步记录器导致 OutOfMemory Java 堆空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19104190/

相关文章:

java - K-ary树递归打印方法到非递归

java - Gson JsonObject 复制值影响其他 JsonObject 实例

c# - 在 F# 中正确等待返回类型为 Task<T> 的异步 C# 方法

c# - 在新的Thread()中等待是否毫无意义?

java - Jasper with Spring——来自 org.apache.commons.digester 的大量日志

java - 使用setParameter或setParametrList删除数据HQL奇怪

java - 扫描仪 nextInt() 和 hasNextInt() 问题

java - 管理 Spring 异步任务执行器中特定方法的线程执行数量

python - logger 应该是参数还是全局变量?

logging - 将 screen (程序)输出保存到文件