tomcat之quartz : Memory Leak

arxive 阅读:17 2024-12-31 21:38:35 评论:0

我正在使用 Quartz 每小时运行一项工作。 servlet 在 Tomcat 上运行,我使用 ServletConextListener 来监听上下文何时被破坏。

当我关闭 tomcat 时,我收到消息:

“似乎已经启动了一个名为 [MyScheduler_Worker-1] 的线程,但未能阻止它”。

但后来我看到这个消息:

“[调试] 9 月 28 日 11:45:26.671 AM MyScheduler_Worker-1 [org.quartz.simpl.SimpleThreadPool]

WorkerThread 已关闭。”

那么假设由于这个线程而没有内存泄漏是否安全?

这是我的日志的外观:

{SEVERE: The web application [/*************] appears to have started a thread 
 
named [MyScheduler_Worker-1] but has failed to stop it. This is very likely to c 
 
reate a memory leak. 
 
Sep 28, 2011 11:45:26 AM org.apache.catalina.loader.WebappClassLoader clearRefer 
 
encesThreads 
 
SEVERE: The web application [/*************] appears to have started a thread 
 
named [MyScheduler_Worker-2] but has failed to stop it. This is very likely to c 
 
reate a memory leak. 
 
Sep 28, 2011 11:45:26 AM org.apache.catalina.loader.WebappClassLoader clearRefer 
 
encesThreads 
 
SEVERE: The web application [/*************] appears to have started a thread 
 
named [MyScheduler_Worker-3] but has failed to stop it. This is very likely to c 
 
reate a memory leak. 
 
[DEBUG] 28 Sep 11:45:26.671 AM MyScheduler_Worker-2 [org.quartz.simpl.SimpleThre 
 
adPool] 
 
WorkerThread is shut down. 
 
 
 
[DEBUG] 28 Sep 11:45:26.671 AM MyScheduler_Worker-1 [org.quartz.simpl.SimpleThre 
 
adPool] 
 
WorkerThread is shut down. 
 
 
 
[DEBUG] 28 Sep 11:45:26.671 AM MyScheduler_Worker-3 [org.quartz.simpl.SimpleThre 
 
adPool] 
 
WorkerThread is shut down. 

请您参考如下方法:

我知道这是一个旧线程,但以防其他人正在寻找它。

我们一直在获取线程的警告,直到我们在 ServletContextListener.shutDown() 方法中添加了关闭 Quartz 调度程序的代码。

要关闭调度程序:

            quartzScheduler.shutdown(); 
 
            int ct = 0; 
 
            // Try waiting for the scheduler to shutdown. Only wait 30 seconds. 
            while(ct < 30) { 
                ct++; 
                // Sleep for a second so the quartz worker threads die.  This  
                // suppresses a warning from Tomcat during shutdown. 
                Thread.sleep(1000); 
                if (quartzScheduler.isShutdown()) { 
                    break; 
                } 
            } 


标签:Tomcat
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号