杀-3或jstack:有什么区别?

Ana*_*ass 16 java kill jstack thread-dump

我想得到在jboss服务器上运行的我的Web应用程序的线程转储.

我找到了两个解决我问题的方法:

  • 使用unix命令:kill -3
  • 使用JDK中存在的jstack工具.

谁能向我解释这两种方法之间的区别?

提前致谢 !

Jon*_*oni 19

jstack命令可以获取在远程计算机上运行的程序的线程转储,它也可以在Windows上运行.

kill -3仅适用于本地程序,而在Windows上则没有kill.

  • +1 Jstack还允许您将堆栈输出发送到文件,而kill -3(或QUIT)将其发送到控制台.但是如果你的操作系统支持kill,输出应该是相同的. (4认同)
  • 不总是.对我来说,`jstack -F 1138`只打印:`线程1138 :(状态= IN_JAVA)`和`kill -3 1138`打印`全线程转储......"ActorSystem-scheduler-1"#14 prio = 5 os_prio = 0 tid = 0x00007fddb4f58800 nid = 0x472 runnable [0x00007fdda4124000] java.lang.Thread.State:RUNNABLE` (2认同)