2012-11-28 45 views
3

我有一個Tomcat內7.春ThreadPoolTask​​Executor類引起MemoryLeak在Tomcat中

運行我使用Spring的ThreadPoolTask​​Executor類來處理一些關閉的消息隊列中的彈簧3的應用程序。我有一個使用@Scheduled的bean,它每100毫秒向執行器提交任務。

但是,我注意到當我關閉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. 
Nov 28, 2012 1:29:18 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads 

有誰知道如何解決這個問題?

+0

最有可能的線程在關閉的過程,但並沒有迅速完成足夠。我認爲你可以放心地忽略這個警告。 – Codo

回答

0

當您連接ThreadPoolTaskExecutor時,請嘗試撥打setWaitForTasksToCompleteOnShutdown(true)

文檔在這裏:http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/scheduling/concurrent/ExecutorConfigurationSupport.html#setWaitForTasksToCompleteOnShutdown(boolean),它表示默認值爲false。

+0

感謝您的建議。然而,看起來Spring 3中有一個錯誤使用了這個設置:https://jira.springsource.org/browse/SPR-5387 – seedhead

0

您是否在executor bean上註冊了shutdown方法?我能夠通過這樣來解決這個問題:

@Bean(destroyMethod="shutdown") 
    public Executor taskExecutor() { 
     return Executors.newScheduledThreadPool(100); 
    } 

編號:

http://docs.spring.io/spring/docs/3.2.0.RC1_to_3.2.0.RC2/changes/docdiffs_org.springframework.scheduling.annotation.html

+0

我知道這是一個非常古老的線程;儘管如此,我確實有同樣的問題實施上述戰略並沒有解決我的問題......還有什麼可以解決這個問題? – harry

相關問題