从该输出信息可知:
- 在输出的最后一段,有明确的"Found one Java-level deadlock"输出,所以通过jstack可检测死锁
- 输出中包含了所有线程,除了我们的north,sorth线程外,还有"Attach Listener", “C2 CompilerThread0”, "C2 CompilerThread1"等
- 每个线程下面都会输出当前状态,以及这个线程当前持有锁以及等待锁,当持有与等待造成循环等待时,将导致死锁
再看一个案例:
1.7 jcmd
执行 JVM 相关分析命令(整合命令)。
JFR.stop JFR.start JFR.dump JFR.check VM.native_memory VM.check_commercial_features VM.unlock_commercial_features ManagementAgent.stop ManagementAgent.start_local ManagementAgent.start VM.classloader_stats GC.rotate_log Thread.print GC.class_stats GC.class_histogram GC.heap_dump GC.finalizer_info GC.heap_info GC.run_finalization GC.run VM.uptime VM.dynlibs VM.flags VM.system_properties VM.command_line VM.version help
VM.version
jrunscript/jjs
执行 js 命令
jconsole
jvisualVM