2008-12-19 65 views
2

我正在嘗試分析發生不一致的JVM崩潰。當它發生時,我會得到一個hs_err_pid312.log文件。java最佳調試選項

我加Thread.setDefaultUncaughtExceptionHandler(新Thread.UncaughtExceptionHandler(),但我不知道,這將捕獲的錯誤。

發生這種情況下一次我能做些什麼其他的事情的話,我可以獲得儘可能多的信息,可能嗎?

感謝

+0

你還沒有告訴我們你在什麼環境,或者日誌文件的內容是什麼。 – 2008-12-19 19:45:56

回答

1

hs_err文件看起來非常令人生畏,但如果您知道要查找的內容可能會有所幫助。你可能想看看Java Troubleshooting and Diagnostics Guide;尤其是第2.2節。該部分介紹如何理解HotSpot試圖告訴你什麼。 2.2.2節詳細介紹了一些示例崩潰和提示可能存在的後果。

如果您在hs_err文件頭中看到有關「grow array」的內容,那麼您的問題可能是OutOfMemoryError。通常情況下,JVM應該在這種情況下正常退出,但應用程序中的非守護線程可以阻止這種情況發生。

0

JVM崩潰通常是通過分割違反或其他低級別的操作引起的,並不會作爲例外處理。

日誌文件應該provid e所有您需要的信息:它會顯示機器在碰撞時的堆棧跟蹤,當前的PC值和存儲器映射。如果你引用內存映射,你會看到在崩潰時使用了什麼庫(儘管這並不總是有效的,特別是當其他東西消失時,你又回到了錯誤的位置)。

一般來說,這些問題發生在不良行爲的JNI代碼中。所以我建議從那裏開始。

0

好的,您需要查看該日誌文件的內容,但一般情況下(稍微使用Google)後,我看到這是JVM的熱點版本在Windows計算機上遇到無法恢復的錯誤的結果。大多數例子看起來像DLL中不可解析的符號。