kill -3上没有生成threaddump

时间:2012-03-05 15:56:21

标签: java jvm thread-dump

是否有可能kill -3 / quit PID不打印任何内容,即空线程转储?我们听到了一位支持工程师的故事,并想知道是否有专家可以验证。

这是在RHEL 5上的Java 6_26

3 个答案:

答案 0 :(得分:2)

某些服务器上的JVM线程转储的控制台输出被重定向到日志文件。对于Tomcat Server,它通常是Catalina.out。

答案 1 :(得分:2)

当服务器重定向到stdout时,我只看到过这种情况,就像JBoss一样,并且stdout已被重定向到/ dev / null,因为设置服务器的人都认为进入stdout的所有内容都已经转到了命名的日志文件。 / p>

答案 2 :(得分:0)

我已经看到了您在独立Java应用程序(Oracle JDK 1.6.20 +,Linux)中描述的行为,但我不知道如何一致地重现此行为。它可能是在其中一个帖子中OutOfMemoryError之后,但我不再确定了。

我也认为我得到的不仅仅是一个空的转储,但是命令实际上已经冻结,并且在我等待一段时间后按下ctrl + C之前没有将我返回到shell。不管怎样,我确信jstack的行为与kill -3的行为完全相同。当它发生时,应用程序的状态非常糟糕,以至于它对正常kill没有反应,只有kill -9对它起作用。没有重定向,在正常情况下,应用程序应对kill -3做出反应。