团队的项目需要做定时任务,于是选择了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>
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐