快速回答當然是「無需哭泣」:)。Java進程如何死亡?
在Win7 32位系統上,我的Java應用程序(J2SE 1.7)出現了一個非常奇怪的問題。我遇到的所有情況:
- 有時超出Java堆內存(所以我可以登錄並從此一蹶不振)
- 有時在本地崩潰,我有
hs_err_pidxxxx.log
文件和我可以分析正在發生的事情。 - 有時它會崩潰在本機和我沒有
hs_err
文件,但我有一個彈出的Java停止運作,我可以看到Windows事件日誌中的異常,甚至用視覺的一部分過程進行調試。 - 有時它會崩潰,我什麼都沒有(沒有hs_err,沒有彈出,沒有...)。它只是結束,如果有
System.exit()
或本地exit()
調用。
所以我的問題是:
- 我怎麼能肯定這是一個天然的退出調用,因爲我沒有我使用本機庫的所有代碼?
- 是否有可能產生這種奇怪的行爲產生的另一種意思?
- 最後如何調試和跟蹤哪些lib可能是根本原因?
這個錯誤是否可重現?也就是說,是否存在一系列條件,當存在時程序總是表現出這種行爲? –
不是100%可複製的,但應用程序中的某個路徑會導致這種「崩潰」。當然這個路徑涉及本地庫。這不是隨時可能發生的隨機錯誤,但是在特定路徑中,它可以「崩潰」或不崩潰。 – TrapII