FullThreadDump demonstrates the use of the java.lang.management API to print the full thread dump. JDK 6 defines a new API to dump the information about monitors and java.util.concurrent ownable synchronizers. This demo also illustrates how to monitor JDK 5 and JDK 6 VMs with two versions of APIs. It contains two parts: a) Local monitoring within the application b) Remote monitoring by connecting to a JMX agent with a JMX service URL: service:jmx:rmi:///jndi/rmi://:/jmxrmi where is the hostname and is the port number to which the JMX agent will be connected. To run the demo --------------- a) Local Monitoring java -cp /demo/management/FullThreadDump/FullThreadDump.jar Deadlock This will dump the stack trace and then detect deadlocks locally within the application. b) Remote Monitoring (1) Start the Deadlock application (or any other application) with the JMX agent as follows: java -Dcom.sun.management.jmxremote.port=1090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -cp /demo/management/FullThreadDump/FullThreadDump.jar Deadlock This instruction uses the Sun's built-in support to enable a JMX agent. You can programmatically start a JMX agent with the RMI connector using javax.management.remote API. See the javadoc and examples for javax.management.remote API for details. (2) Run FullThreadDump java -jar /demo/management/FullThreadDump/FullThreadDump.jar \ localhost:1090 This will dump the stack trace and then print out the deadlocked threads. These instructions assume that this installation's version of the java command is in your path. If it isn't, then you should either specify the complete path to the java command or update your PATH environment variable as described in the installation instructions for the Java(TM) SDK.