我的java桌面应用程序(使用netbean开发)在运行很长时间(大约10个小时)时处于挂起状态。当JAVA桌面应用程序挂起时应该怎么做?
我的应用程序的目的是将SOAP Web服务调用到企业系统。 所以,执行总是需要很长时间。
但是在第一个1-4小时内,它工作得很好。
运行10小时以上时总会出现此问题。
下面我已经完成了一些步骤。
使用log4j记录所有异常消息。 (因为我认为它可能会导致网络连接,数据库连接等)。
每次都在循环语句中调用System.gc()(因为我认为它运行很长时间,它不会释放资源回到系统,所以我强制它调用垃圾回收器)。
我曾尝试和测试,在任何情况下该异常可偏偏如
- 网络连接断开。
- 连接超时。
- 企业发回消息为500内部错误(以及所有http错误)
- SOAP消息的XML格式无效。
- 解析XML时失败
- 与数据库的连接无法建立。
- 无效的SQL语句。
- 数据库中字段的数据类型无效。
每个异常都会被log4j捕获并能够继续运行。
但是,这在第1 - 4小时内运作良好。达到10小时时。它被吊死了。没有日志。没有信息。
我用JAVA JDK 1.8,MySQL数据库5.5.4,Windows服务器2008 R2 64位
能否请您帮忙建议我缺少的是什么斑或点?
还有什么我应该关心和检查的?
最好的问候,
你分配你的Java应用程序有多少内存?内存使用量会随着时间增加吗?尝试设置更高或更低的XMX并查看它是否会影响崩溃需要多长时间。如果发生这种情况,那么你将有一个地方开始,并可以运行在你可能绑定资源的情况下。 – sorifiend
@sorifiend此应用程序的内存分配大约3GB。 我在任务管理器中监视并查看javaw.exe进程(我的应用程序)只消耗〜170 MB。 :( –