开发中遇到一个需求需要定时器实现,按照文档配置好Spring定时器,时间定到某个点重启Tomcat等待时间,等时间到了发现定时器未能执行,启动Tomcat过程中也没有发现错误
打开JDK1.6自带的故障检测工具,先监听到APP占用的JVM进程号,点击Heap dump 按钮后生产heap dump文件,搜索Spring定时器的类,发现已经加载到内存中,但是没有初始化(没有创建实例),重新审查XML文件,发现有一个属性叫做default-lazy-init=true,顿时恍然大悟,原来加上这个属性当应用服务器启动时,Spring只是负责将这些类加载到JVM中,并没有初始化这些类,将这个属性改为false后,发现启动时间也延长了2S以上,定时器的功能也可以运行。
打开JDK1.6自带的故障检测工具,先监听到APP占用的JVM进程号,点击Heap dump 按钮后生产heap dump文件,搜索Spring定时器的类,发现已经加载到内存中,但是没有初始化(没有创建实例),重新审查XML文件,发现有一个属性叫做default-lazy-init=true,顿时恍然大悟,原来加上这个属性当应用服务器启动时,Spring只是负责将这些类加载到JVM中,并没有初始化这些类,将这个属性改为false后,发现启动时间也延长了2S以上,定时器的功能也可以运行。
文章详细介绍了在使用Spring定时器配置时遇到的问题:定时器未能执行,导致启动Tomcat时间延长。通过修改XML文件中default-lazy-init属性,解决了类在应用服务器启动时不被初始化的问题,最终使定时器功能得以正常运行。
1511

被折叠的 条评论
为什么被折叠?



