Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java kill-3上未生成线程转储_Java_Jvm_Thread Dump - Fatal编程技术网

Java kill-3上未生成线程转储

Java kill-3上未生成线程转储,java,jvm,thread-dump,Java,Jvm,Thread Dump,kill-3/quit PID是否可能不打印任何内容,即空线程转储?我们从一位支持工程师那里听到了一个故事,想知道是否有专家可以验证 这是在RHEL 5上的Java 6_26上,某些服务器上JVM线程转储的控制台输出被重定向到日志文件。对于Tomcat服务器,它通常是Catalina.out。我只在服务器重定向到标准输出时看到过这种情况,比如JBoss,而stdout已经被重定向到/dev/null,因为任何设置服务器的人都认为所有进入stdout的内容都已经进入了一个命名的日志文件。我已经看到

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


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

我只在服务器重定向到标准输出时看到过这种情况,比如JBoss,而stdout已经被重定向到/dev/null,因为任何设置服务器的人都认为所有进入stdout的内容都已经进入了一个命名的日志文件。

我已经看到了您在独立Java应用程序(Oracle JDK 1.6.20+,Linux)中描述的行为,但我无法告诉您如何一致地重现这种行为。它可能是在其中一个线程中的
OutOfMemoryError
之后发生的,但我不确定是否还有其他错误


我还认为,我得到的不仅仅是一个空转储,而是命令实际上冻结了,直到我在等待了一段时间后按下ctrl+C后才返回shell。无论如何,我确信
jstack
的行为与
kill-3
的行为完全相同。当它发生时,应用程序的状态非常糟糕,以至于它对正常的
kill
没有反应,只有
kill-9
对它起作用。没有重定向,在正常情况下,应用程序会对
kill-3
做出应有的反应。

如果我们将输出重定向到命令本身的文件:kill-3 PID>dump,会有什么区别吗?我记得,重定向kill-3的输出不起作用,我们必须更改启动脚本(不再重定向)有点晚了,但我发现您可以使用“jstack”来实现这一点。