我的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。 :( –