我目前使用的是 tomcat7 。我的 Web 应用程序在 stop 时导致 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.
我没有在我的网络应用程序中使用 java.util.Timer
。
最佳答案
这不一定表示您的代码正在使用java.util.Timer
(顺便说一下,这在 Java EE webapp 中是一个非常糟糕的主意,因为提到的原因 here )。此 Timer
也可以作为您的 webapp 的 /WEB-INF/lib
文件夹中提供的任何库的一部分包含在内。显然,某些库已在创建 Timer
的 webapp 启动时自动注册了 ServletContextListener
或 ServletContainerInitializer
。
您需要调查它是哪个库,然后相应地修复/删除它。提取 JAR 以检查随附的代码,或将它们一一删除。一旦找到罪魁祸首,我肯定会向库的维护人员报告,绝对不建议在 Java EE webapp 中使用 Timer
,他们必须修复它。
关于jsp - tomcat - 计时器内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10725498/