java spring threadpooltaskexecutor导致tomcat内存泄漏
我知道这个问题被问了好几次,但没有一个能提供正确答案,所以重新发布
我有一个在Tomcat7中运行的Spring4Jersey Web服务
我正在使用Spring的ThreadPoolTaskExecutor来处理队列中的一些消息。我有一个bean,它使用@Scheduled,每1000毫秒向执行者提交一次任务
然而,我注意到当我关闭Tomcat时,它警告我它不能关闭某些任务
SEVERE: The web application appears to have started a thread named [taskExecutor-9] but has failed to stop it. This is very likely to create a memory leak.
org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
这是我用来初始化taskExecutor的代码
@Bean(destroyMethod="shutdown")
public Executor taskExecutor() {
return Executors.newScheduledThreadPool(100);
}
提到spring会处理我创建的线程;但不幸的是,情况似乎并非如此
有人能提供一些建议吗
# 1 楼答案
作为一个web应用程序,您可以尝试以下内容:
您的计划配置类
关闭
ServletContextListener
的contextDestroyed
方法中的ExecutorService
为我工作,我使用
Tomcat8