1. 程式人生 > >Spring整合Quartz遇到記憶體洩露問題

Spring整合Quartz遇到記憶體洩露問題

團隊的專案需要做定時任務,於是選擇了Quartz

  • 在整合過程中,遇到了Quartz配置不正確導致記憶體洩露的問題。
    當啟動伺服器時,程式是正常的,重啟時,Web容器報錯,無法unregister相應的Bean。
    起初並沒有在意,之後發現伺服器記憶體佔用過高,檢視記憶體後,發現有多個Java程序。
    於是猜測是執行緒池或Quartz沒有正常關閉。
    加入專門關閉執行緒池的Listener後,仍然無法解決問題,於是判斷為Quartz沒有正確被銷燬。

  • 解決方法:在Quartz的配置中加入關閉引數,讓Spring容器結束Quartz後再退出

<bean name="startQuertz"
lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="cleanTrigger" /> </list> </property> <property name="waitForJobsToCompleteOnShutdown" value="true" /> </bean>