JCarder is an open source tool for finding potential deadlocks in concurrent multi-threaded Java programs. JCarder does this by instrumenting Java byte code dynamically (i.e., it is not a tool for static code analysis) and looking for cycles in the graph of acquired locks.
The only requirement is that the program you want to analyze can be run in an ordinary JVM (compliant with Java 5.0 or higher). There is no need to use a special JVM or build procedure.
JCarder is released to the open source community by Enea under the GNU GPL v2 license.
How to use JCarder
It's very easy to use JCarder!
Step one: Run your program together with the JCarder agent:
java -javaagent:jcarder.jar -jar yourprogram.jar
Step two: Run the JCarder analyzer on the result:
java -jar jcarder.jar
Step three: Visualize information from the analysis step: