2013-07-23 22 views
2

我有一段Java代碼,有時會導致JVM「掛起」。發生這種情況時,我無法通過類似jvisualvm(該工具會說「連接超時」)等工具與其通信,並且在發出SIGQUITkill -3)時也不會打印線程轉儲或終止。如果我發出SIGABRT(kill -6),該過程將終止。當JVM對SIGQUIT無響應時,如何找到更多信息?

因此,我無法獲得線程轉儲,也無法找到其內存中的內容。在這種情況下如何獲得更多信息?如果有幫助,操作系統爲OSX和我的JVM版本是
Java(TM) SE Runtime Environment (build 1.6.0_51-b11-457-11M4509) Java HotSpot(TM) 64-Bit Server VM (build 20.51-b01-457, mixed mode)

回答

1

你不能,這就是爲什麼它被稱爲「掛起」。由於內部問題(例如無限循環,死鎖...),JVM進程無響應,因此它不會響應。這可能是由於JVM實現中的一個錯誤。您可以嘗試調試JVM以瞭解發生了什麼。 HotSpot是GPL,所以你也可以獲得源代碼。

如果您懷疑代碼中的某些內容導致掛起(例如,執行特定操作時JVM始終掛起),則可以粘貼它,以便我們可以看一看。

相關問題