tomcat - 计时器内存泄漏

时间:2012-05-23 18:07:55

标签: jsp tomcat servlets memory-leaks

我目前正在使用tomcat7。我的Web应用程序在停止时导致Timer内存泄漏。 日志是:

   SEVERE: A web application appears to have started a TimerThread     
   named [Timer-5] via the java.util.Timer API but has failed to stop it. 
   To prevent a memory leak, the timer (and hence the associated thread) 
   has been forcibly cancelled.   

我没有在我的网络应用中使用j ava.util.Timer

3 个答案:

答案 0 :(得分:2)

这并不一定表明您的代码正在使用java.util.Timer(这在Java EE webapp中是一个非常糟糕的主意,原因提到here )。此Timer也可以作为webapp的/WEB-INF/lib文件夹中提供的任何库的一部分包含在内。显然,某些图书馆已在webapp的启动时自动注册ServletContextListenerServletContainerInitializer,其中Timer已创建。

您需要调查它是哪个库,然后相应地修复/删除它。提取JAR以检查附带的代码,或逐个删除它们。一旦找到罪魁祸首,我肯定会向图书馆的维护人员报告,在Java EE webapp中绝对不建议使用Timer并且他们必须修复它。

答案 1 :(得分:0)

这个我不太确定。似乎有一个RMI超时计时器,但所有这些都是Tomcat的一部分,所以它不应该是泄漏

答案 2 :(得分:0)

tomcat wiki中有一个解释(种类)和指向此bug in commons-pool的链接。

在tomcat> 6.0.27

中,计时器停止是可选的