我目前使用的是tomcat7。我的web应用程序在停止时导致了计时器内存泄漏。日志为:
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. 我没有在我的web应用中使用java.util.Timer。
发布于 2012-05-24 08:14:29
这并不一定表明您的代码正在使用java.util.Timer (顺便说一句,由于前面提到的here原因,这在Java webapp中是一个非常糟糕的想法)。此Timer也可以作为webapp的/WEB-INF/lib文件夹中提供的任何库的一部分。显然,一些库在webapp启动时自动注册了一个ServletContextListener或ServletContainerInitializer,其中创建了Timer。
您需要调查它是哪个库,然后相应地修复/删除它。解压JAR以检查附带的代码,或者逐个删除它们。一旦找到了罪魁祸首,我肯定会向该库的维护者报告,绝对不推荐在Java webapp中使用Timer,他们必须修复它。
发布于 2012-05-25 13:18:47
这一点我不太确定。似乎有一个RMI超时计时器,但所有这些都是Tomcat的一部分,所以不应该是泄漏
发布于 2012-05-25 23:04:50
在tomcat wiki中有一个解释(类似于)和一个指向这个bug in commons-pool的链接。
在tomcat >6.0.27中,定时器停止是可选的
https://stackoverflow.com/questions/10725498
复制相似问题