2010-05-03 56 views
13

在Eclipse調試環境中是否有任何機制來查看持有同步鎖的狀態並等待進程?調試Java同步

+0

您正在調試可能的死鎖嗎? – aioobe 2010-05-03 09:34:45

+0

我發現了一個意外的死鎖,但我不得不「猜測」,可能是從一組莫名其妙的停頓過程中發現的。有 應該是一個更好的方法。 – ddyer 2010-05-03 10:00:32

回答

13

您可以顯示對象監視的狀態Eclipse的調試器。你可以find a short, clear tutorial here。對於每個線程,Eclipse都可以顯示線程擁有的監視器以及它正在等待的監視器。

+1

謝謝。我無法想象爲什麼監視器視圖默認關閉。 – ddyer 2010-05-03 23:09:18

+0

它可能是,這隻有在你正在尋找由同步語句引起的死鎖時纔有效。我目前正在尋找由'ReentrantReadWriteLock'引起的一個,並且我沒有從eclipse中獲得這種信息。 – Scheintod 2016-02-06 10:29:25

1

至於建議here你可以(如果你運行Sun JVM)執行以下步驟:

  1. 啓動JConsole的或jvisualvm(均出現在你的JDK安裝的bin目錄,
  2. 重視你懷疑進程已經鎖定了
  3. 轉到線程窗格中,有一個「死鎖檢測」按鈕