Я использую log4j2 для ведения журнала, версии tomcat8 и java8. Я использовал атрибут «monitorInterval» для периодической проверки файла log4j2.xml. Во время выключения моего кота я столкнулся с проблемой утечки памяти. Как решить эту проблему с утечкой памяти?
Ниже приведены журналы каталины:
06 октября 2016 г. 15:13:55.927 ПРЕДУПРЕЖДЕНИЕ [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads Похоже, веб-приложение [mywebapp] запустило поток с именем [Log4j2-Log4j2Scheduled-1], но не удалось остановить его. Это очень вероятно, чтобы создать утечку памяти. Трассировка стека потока: sun.misc.Unsafe.park(собственный метод) 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:1067) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) java.lang.Thread.run(Thread. ява: 745)
Заранее спасибо.
Обновлено: я проанализировал свои журналы, на самом деле контекст регистратора снова инициализируется после уничтожения Log4jServletContextListener.
2016-10-22 13:49:36,347 localhost-startStop-2 DEBUG Log4jServletContextListener, обеспечивающий правильное завершение работы Log4j. 2016-10-22 13:49:36,382 localhost-startStop-2 DEBUG Запуск LoggerContext[name=bb4719, org.apache.logging.log4j.core.LoggerContext@d77214]...
На самом деле в моем приложении я использую Spring ContextLoaderListner в web.xml, поэтому он может использовать внутреннюю регистрацию при уничтожении Spring Listner.
Спасибо
log4j-web.jar
отсутствовал, из-за чего перехватчики выключения не выполнялись должным образом. У других была такая же проблема, но в их случае они использовали некоторые старые свойства каталины, в которых банки log4j игнорировались. - person bhantol   schedule 06.10.2016