1

我目前正在使用 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.   

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

4

3 回答 3

2

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

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

于 2012-05-24T00:14:29.247 回答
0

tomcat wiki中有一个解释(种类)和一个指向commons-pool 中这个错误的链接。

定时器停止在 tomcat >6.0.27 中是可选的

于 2012-05-25T15:04:50.460 回答
0

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

于 2012-05-25T05:18:46.557 回答