Spring整合Quartz遇到内存泄露问题
团队的项目需要做定时任务,于是选择了Quartz在整合过程中,遇到了Quartz配置不正确导致内存泄露的问题。当启动服务器时,程序是正常的,重启时,Web容器报错,无法unregister相应的Bean。起初并没有在意,之后发现服务器内存占用过高,查看内存后,发现有多个Java进程。于是猜测是线程池或Quartz没有正常关闭。加入专门关闭线程池的Listener后,仍然无法解决问题
·
团队的项目需要做定时任务,于是选择了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>
更多推荐
已为社区贡献1条内容
所有评论(0)