我在log4j v1中面临内存泄漏的问题。如何解决这个内存泄漏问题。此方法定期检查我类中的log4j.properties文件更新。
PropertyConfigutaror.configureAndWatch(time_ms);
但是在关机期间,tomcat内存泄漏问题出现了。日志如下:
2016年10月6日15:13:55.973警告本地主机-startStop-2 org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads网络应用程序myapp似乎启动了一个名为Thread-10的线程,但未能阻止它。这很可能造成内存泄漏。线程堆栈跟踪: org.apache.log4j.helpers.FileWatchdog.run(FileWatchdog.java:103) (本地方法)java.lang.Thread.sleep
提前感谢
发布于 2016-10-06 18:33:44
是否有一种方法可以让log4j在配置文件更改时自动重新加载? 是。DOMConfigurator和PropertyConfigurator都支持通过configureAndWatch方法自动重新加载。有关更多细节,请参见API文档。 是因为configureAndWatch会启动一个单独的wath犬类线程,并且由于无法在log4j 1.2中停止这个线程,所以configureAndWatch方法在应用程序被回收的J2EE环境中使用是不安全的。
对于Tomcat这样的不成熟的应用服务器,第二条语句也是正确的。
如果要在运行时重新加载配置,我建议更新到log4j 2。
还可以编写自己的属性文件读取器并以编程方式设置日志配置。有关更多信息,请参见在运行时更改Log4j属性。
https://stackoverflow.com/questions/39903081
复制相似问题