是否有可能 kill -3 / quit PID 不打印任何内容,即空线程转储?我们从一位支持工程师那里听到了一个故事,想知道是否有专家可以验证。
这是 RHEL 5 上的 Java 6_26
是否有可能 kill -3 / quit PID 不打印任何内容,即空线程转储?我们从一位支持工程师那里听到了一个故事,想知道是否有专家可以验证。
这是 RHEL 5 上的 Java 6_26
某些服务器上 JVM 线程转储的控制台输出被重定向到日志文件。在 Tomcat 服务器的情况下,它通常是 Catalina.out。
我只在服务器重定向到标准输出(如 JBoss)时看到这一点,并且标准输出已被重定向到 /dev/null,因为设置服务器的人认为所有进入标准输出的东西都已经进入了一个命名的日志文件。
我已经看到您在独立 Java 应用程序(Oracle JDK 1.6.20+,Linux)中描述的行为,但我不知道如何一致地重现此行为。可能是OutOfMemoryError
在其中一个线程之后,但我不确定了。
我还认为我得到的不仅仅是一个空转储,而是命令实际上冻结了,直到我在等待一段时间后按 ctrl+C 才将我返回到 shell。无论哪种方式,我确信 的行为与 的jstack
完全相同kill -3
。当它发生时,应用程序的状态非常糟糕,它没有对正常做出反应kill
,只能kill -9
在上面运行。没有重定向,在正常情况下,应用程序会做出kill -3
应有的反应。