Log4j2 线程在 Tomcat 关闭时泄漏

问题描述 投票:0回答:1

我正在为我的应用程序使用 log4j2.18.0 jar(log4j-api、log4j-core、log4j-web、log4j-slfj-impl、log4j-1.2-api)和 tomcat 8。应用程序无法使用 shutdown.bat 命令正确关闭。在线程转储中观察到一些日志记录线程。
尝试使用 LogManager.shutdown() 停止这些线程,但没有任何变化。

Log4j2-TF-59-AsyncLoggerConfig-20" #1282 daemon prio=5 os_prio=0 tid=0x0000000060b0c000 nid=0xf0c4 in Object.wait() [0x000000002ae5e000]Log4j2-TF-59-AsyncLoggerConfig-20" #1282 daemon prio 5 os_prio=0 tid=0x0000000060b0c000 nid=0xf0c4 在 Object.wait() [0x000000002ae5e000]
java.lang.Thread.State:TIMED_WAITING(在对象监视器上)
在 java.lang.Object.wait(本机方法)
在 java.lang.Object.wait(Object.java:460)
在 org.apache.logging.log4j.core.async.TimeoutBlockingWaitStrategy.awaitNanos(TimeoutBlockingWaitStrategy.java:130)
在 org.apache.logging.log4j.core.async.TimeoutBlockingWaitStrategy.waitFor(TimeoutBlockingWaitStrategy.java:86) - 锁定<0x00000007b7b17e70>(一个java.lang.Object)
在 com.lmax.disruptor.ProcessingSequenceBarrier.waitFor(ProcessingSequenceBarrier.java:56)
在 com.lmax.disruptor.BatchEventProcessor.processEvents(BatchEventProcessor.java:159)
在 com.lmax.disruptor.BatchEventProcessor.run(BatchEventProcessor.java:125)
在 java.lang.Thread.run(Thread.java:748)
锁定的可拥有同步器:
- 无
“Log4j2-TF-58-Scheduled-19”#1281 守护进程 prio=5 os_prio=0 tid=0x0000000060b07800 nid=0xeec0 等待条件 [0x0000000000adf000] java.lang.Thread.State:TIMED_WAITING(停车)
在 sun.misc.Unsafe.park(本机方法) - 停车等待<0x00000007b804d140>(一个java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
在 java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
在 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
在 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)
在 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
在 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
在 java.lang.Thread.run(Thread.java:748)
锁定的可拥有同步器:
- 无

java tomcat memory-leaks log4j2
1个回答
0
投票

尝试将

log4j-web
依赖添加到类路径中。

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-web</artifactId>
</dependency>
© www.soinside.com 2019 - 2024. All rights reserved.