【发布时间】:2012-10-09 13:42:51
【问题描述】:
当我向我的 java 进程发送一个 SIGQUIT 命令(使用 kill -3 或 kill -QUIT )时,它会将所有堆栈的跟踪打印到 stderr,其中包含有关持有的锁和死锁检测的信息。我可以从程序内部以某种方式触发它吗?我想在每次某个操作花费太长时间时自动执行此操作。
我知道可以获得堆栈跟踪(请参阅Is there a way to dump a stack trace without throwing an exception in java?、Thread dump programmatically /JDI (Java Debugger Interface))。但我想查看全部内容:堆栈跟踪、线程状态、持有的锁、阻塞的锁、死锁检测等,即我发送 SIGQUIT 时得到的所有内容;不仅仅是堆栈跟踪。
【问题讨论】:
-
这不是重复的。其他问题只与堆栈跟踪有关。我想要所有的东西,堆栈跟踪,线程状态,持有的锁,阻塞的锁,死锁检测等,即我发送 SIGQUIT 时得到的所有东西。我找到的最接近的答案是使用 ThreadMXBean,但这不是一个完整的解决方案,无论哪种方式,现在我都无法将它添加到这个问题中。
标签: java jvm signals stack-trace