java程序运行两三个小时卡死无报错,控制台停止输出log,每次需重启tomcat

Homw 2015-06-09 05:16:40
一、程序搭建详情:
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的线程运行状况,但并未有死锁的线程。

就这个问题折腾了好几天没有进展,所以贴出来希望大家给点建议,在此先谢过啦~
...全文
1950 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mash5_paul 2017-08-15
  • 打赏
  • 举报
回复
一般都是while(true),cpu一直100%
lifewell1 2017-08-15
  • 打赏
  • 举报
回复
看日志报错,感觉是数据库连接数过多,session没有关闭
zk_Kang 2017-08-15
  • 打赏
  • 举报
回复 1
一般情况是属于内存溢出,回收机制不起左右,程序不够精简。
taodfhkdn 2017-08-14
  • 打赏
  • 举报
回复
我的也出现这样的情况怎么解决
Inhibitory 2015-06-09
  • 打赏
  • 举报
回复
代码实现的问题,你的描述没有什么意义,因为不知道你是怎么实现的。 程序卡死很容易,while(true); 这样程序就完蛋了,同样的告诉你程序死了,你能想像到是个这样的代码造成的吗?所以还是好好的研究代码的实现。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧