我寫了一個java程序,它從自己的線程中的com端口讀取數據並將其放入數據庫中。當發生異常(數據庫或com)時,它會使用runtime.exec重新啓動。經過一天左右,程序有時會凍結。我無法追蹤這發生的確切時間,但似乎在一段時間後會發生。 你們中的一個人知道可能是什麼問題? 謝謝!Java程序凍結
Q
Java程序凍結
0
A
回答
1
如果你只是簡單地捕捉到IO異常並執行runtime.exec,那麼由於JVM過多,你可能會發生內存不足......你確定舊的程序(和JVM)在完成一個新的的Runtime.exec?也就是說,正如@extraneon所說的,你確定你的程序沒有創建你的程序的另一個實例,這又創建了你的程序的另一個實例,......?
0
0
取決於你如何實現你的軟件,你可能有一個設計問題。
如果您從初學者應用程序使用Runtime.exec(),那很好。如果你有這樣的:
try {
doStuff();
} catch(Throwable t) {
Runtime.exec(...);
}
你會得到你的軟件的多個副本運行,每次服用一些資源和永不放棄的那些回來。在這種情況下,您實際上應該清理失敗的線程並啓動一個新的線程(如果可能的話)。
只要是明確的,在我看來,首發的應用程序是一些與主沒有太多超過:
while(true) {
Process p = Runtime.exec(your COM communication program);
if (p.waitFor() == 0 { // Clean exit
break; // exit while loop.
}
// Otherwise p closed with an error and a new process should be started
// which is done in the next iteration of the loop
}
0
當您使用的Runtime.exec啓動進程()是你消耗標準輸出和stderr流?如果否,則應用程序在填充OS緩衝區時會凍結。根據應用程序產生多少輸出以及拋出異常的頻率,您的數字可能會有所不同。
相關問題
- 1. Java應用程序凍結
- 2. Java:雖然循環凍結程序
- 3. Java客戶端應用程序凍結
- 4. Java Swing按鈕凍結程序
- 5. JSlider凍結程序
- 6. SDL程序凍結
- 7. DispatchGroup.wait()凍結程序
- 8. java inputStream凍結
- 9. EventListener凍結(Java)
- 10. 掛接java應用程序崩潰/凍結應用程序
- 11. SKPSMTPMessage凍結我的程序
- 12. 程序與NAudio凍結
- 13. Winform應用程序凍結
- 14. Python + PyQt程序凍結
- 15. iPhone應用程序凍結
- 16. WPF應用程序凍結
- 17. Java Swing - UI凍結
- 18. JavaFX - stage.show();在程序凍結結束
- 19. Java進程WAITFOR()函數會導致應用程序凍結
- 20. Android onPause線程凍結應用程序
- 21. java進程被凍結(?)在linux上
- 22. tomcat中的Java Web應用程序定期凍結
- 23. 調用modelToView()方法凍結Java Swing應用程序
- 24. 這個Java應用程序爲什麼掛起/凍結?
- 25. Java程序凍結,直到套接字連接
- 26. Java程序在使用wait和notifyAll時會凍結
- 27. Java小應用程序和瀏覽器凍結
- 28. 我的Java程序在調用oracle.jdbc.pool.OracleOCIConnectionPool.getConnection時凍結了幾分鐘
- 29. Java SNMP4J陷阱應用程序正在凍結GUI
- 30. Delphi線程凍結
它多頻繁地監聽端口或讀取數據? – 2010-11-22 10:15:50
這是否意味着在某些時候,您的應用程序正在運行另一個應用程序副本,該應用程序會運行另一個應用程序副本等等(取決於例外情況)? – extraneon 2010-11-22 10:16:12
可能的重複http://stackoverflow.com/questions/25385173/what-is-a-debugger-and-how-can-it-help-me-diagnose-problems – Raedwald 2016-01-29 03:37:39