在Unix系统上运行kill -QUIT
将触发线程转储。我知道这是因为我已经完成了数百次。
然而,另一位开发人员告诉我他已经看到这种“崩溃JVM”并使用旋转或JMX API“更安全”。
我很难在网上找到kill -QUIT
这样做的任何参考。
任何人都可以确认它实际上可以杀死java进程/导致JVM退出吗?
(显然有一种方法可以做到这一点,如果有人没有正确输入“-QUIT”: - ))
答案 0 :(得分:2)
12年来,我从未见过kill -QUIT
崩溃JVM。但正如Disco 3所说,如果你在JVM处于遇险状态时进行线程转储(通常是你通常进行线程转储),它可能(可能?)与OutOfMemoryError
崩溃。但在这种情况下,任何都可能导致JVM崩溃。我会毫不犹豫地使用kill -QUIT
,但您可能会发现jstack
更有用,因为它会将线程转储转储到您的标准输出而不是JVM。