Deadlock Detection Graph

 


  The deadlock detection graph shows a graph of threads and monitors that describe a deadlock detection. For the normal situation where no deadlocks are present a "No deadlocks detected" message is displayed in this view.

Deadlocks are analyzed for

  • the primitive synchronization mechanism that's built into the Java platform, i.e. when using the synchronized keyword.
  • the locking facility in the java.util.concurrent package which does not use monitors of objects but a different natively implemented mechanism.

In addition, the deadlock graph also displays situations in which a thread that holds at least one contended monitor is waiting to be notified. This is not necessarily a deadlock, but some deadlocks are of this nature.

  The deadlock detection graph has the following properties:
  • Threads which participate in the deadlock are painted as violet rectangles. The rectangle includes information about
    • The thread name
    • The thread group (in brackets)
  • Monitors which participate in the deadlock are painted as gray rectangles. The rectangle includes information about
    • The class of the monitor
    • The monitor id which can be used to get further information about the monitor in the monitor contention views
  • The ownership of monitors which participate in the deadlock are painted as solid arrows. The arrowhead points from the thread to the monitor. To see details about where the monitor was entered, move the mouse over the arrow and see the information in the tooltip window.
  • The blocking causes of threads which participate in the deadlock are painted as dashed arrows. The arrowhead points from the blocked thread to the monitor that the thread wants to enter. To see details about where the thread is blocking, move the mouse over the arrow and see the information in the tooltip window.
  If you profile with Java <=1.4 (JVMPI), the monitor class names can only be displayed if they are recorded objects. You can enable "Record allocations on startup" in the session startup dialog to record all objects.
  Multiple deadlocks are painted side by side.