一、程序搭建详情:
1.环境:Windows Server2008+MyEclipse10+Tomcat6+JDK6+Oracle11g
2.框架:Spring-2.0.8+Axis1+Hibernate3+C3P0-0.9.0.4
二、程序运行描述:
1.远程接口批量抽取数据,然后存库。
2.运行2-3个小时后,程序突然卡死,控制台停止log输出,导致每次抽取数据不全,还会导致后续的定时任务无法继续运行,每次出现这种情况需要手动重启tomcat才行。
三、考虑的情况及解决办法:
1.有可能内存溢出:这种情况包括JVM内存堆栈溢出或者Hibernate Session缓存溢出等情况,但细想这种情况出现的话,会报异常的,但是程序卡死后,控制台并没有异常输出,即使这样我也尝试过调大JVM的内存,但没有效果。
2.数据库连接失效:我用的是C3P0连接池管理数据库连接,如果程序拿到的连接失效,也会报异常,但控制台并无异常输出,所以这种情况也不太合理。
3.线程死锁:如果线程死锁,会导致程序卡死,我想有可能会出现这种情况,所有我在程序卡死的时候,用jstack调出了JVM的线程运行状况,但并未有死锁的线程。就这个问题折腾了好几天没有进展,所以贴出来希望大家给点建议,在此先谢过啦~